Python 基础语法(1):常量、变量、类型、输入输出与运算符

Python 基础语法(1):常量、变量、类型、输入输出与运算符

  • 前言
  • [1. 常量和表达式](#1. 常量和表达式)
    • [1.1 把 Python 当成计算器](#1.1 把 Python 当成计算器)
    • [1.2 使用表达式计算平均数](#1.2 使用表达式计算平均数)
  • [2. 变量和类型](#2. 变量和类型)
    • [2.1 变量是什么](#2.1 变量是什么)
    • [2.2 定义、命名和使用变量](#2.2 定义、命名和使用变量)
    • [2.3 Python 的基本数据类型](#2.3 Python 的基本数据类型)
    • [2.4 为什么需要类型](#2.4 为什么需要类型)
    • [2.5 动态类型特性](#2.5 动态类型特性)
  • [3. 注释](#3. 注释)
    • [3.1 注释的作用和语法](#3.1 注释的作用和语法)
    • [3.2 注释的书写规范](#3.2 注释的书写规范)
  • [4. 输入输出](#4. 输入输出)
    • [4.1 程序如何与用户交互](#4.1 程序如何与用户交互)
    • [4.2 通过控制台输出](#4.2 通过控制台输出)
    • [4.3 通过控制台输入与类型转换](#4.3 通过控制台输入与类型转换)
  • [5. 运算符](#5. 运算符)
    • [5.1 算术运算符](#5.1 算术运算符)
    • [5.2 关系运算符](#5.2 关系运算符)
    • [5.3 逻辑运算符](#5.3 逻辑运算符)
    • [5.4 赋值运算符](#5.4 赋值运算符)
  • [6. 自测练习](#6. 自测练习)
  • 总结

前言

刚开始学习 Python 时,不必急着挑战复杂项目。先把常量、变量、数据类型、注释、输入输出和运算符这些基础语法学扎实,后面的逻辑判断、循环和函数才会更容易理解。

这一篇从最简单的算术运算出发:先把 Python 当成计算器,再逐步引入变量和类型,接着学习如何写注释、如何与用户交互,最后梳理常见运算符。建议大家把代码亲手运行一遍,尤其留意字符串拼接、输入类型、浮点数比较和短路求值这几个容易踩坑的地方。

1. 常量和表达式

1.1 把 Python 当成计算器

Python 可以直接进行算术运算。下面三行代码分别演示加减、乘法和除法:

python 复制代码
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

这里的 print 是 Python 的内置函数,用来把结果输出到控制台。算术运算可以使用 +-*/ 和括号 ()。计算顺序与日常数学规则一致:先乘除,后加减,需要改变顺序时使用括号。

运算符和数字之间可以没有空格,也可以有多个空格,但通常保留一个空格,这样代码更美观、更容易阅读。

形如 1 + 2 - 3 的算式在编程语言中称为表达式 ,算式的运算结果称为表达式的返回值 。其中 123字面值常量+-*/运算符,也叫操作符。

熟悉 C 或 Java 的读者需要注意:在 Python 中,2 / 3 的结果是小数,不会因为两个操作数都是整数就截断小数部分。

1.2 使用表达式计算平均数

给定四个分数 67.589.012.932.2,求它们的平均数,可以直接把求和与除法写进一个表达式:

python 复制代码
print((67.5 + 89.0 + 12.9 + 32.2) / 4)

代码先计算括号内四个分数的总和,再除以 4,最后由 print 输出表达式的返回值。这个例子只需一步计算,但如果计算过程更复杂,就需要变量来保存中间结果。

2. 变量和类型

2.1 变量是什么

计算四个分数的方差时,需要先求平均值,再计算每个分数与平均值之差的平方,最后求和并除以"项数减一"。这个过程包含多个中间结果,适合使用变量保存:

python 复制代码
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)

代码中的 avgtotalresult 都是变量,** 表示乘方,** 2 就是求平方。变量的作用类似计算器上的存储功能,只不过 Python 可以创建很多变量,分别保存不同的数据。

变量可以看成一块能够容纳数据的空间,这块空间通常对应计算机的内存。变量名则像空间的标签,程序可以通过标签找到并使用其中的数据。

如果把内存想象成一栋宿舍楼,每个房间都可以存放数据,那么内存容量就相当于房间总量。内存越大,能够容纳的数据也就越多。

2.2 定义、命名和使用变量

Python 定义变量的语法非常直接:

python 复制代码
a = 10

其中,a 是变量名,赋值运算符 = 表示把右侧的数据放入左侧变量对应的空间。变量命名既有必须遵守的硬性规则,也有提升可读性的建议:

类别 规则 示例或说明
硬性规则 变量名由字母、数字和下划线构成 可以使用 total_count
硬性规则 数字不能作为变量名开头 1num 不合法
硬性规则 变量名不能与关键字重复 关键字有特殊语法含义
硬性规则 变量名区分大小写 numNum 是两个变量
建议规则 使用有描述性的单词 名称应尽量表达变量用途
建议规则 多个单词可使用驼峰命名法 totalCountpersonInfo

数学中常使用 xyz 表示变量,但一个程序往往会创建很多变量。若全部使用单个字母,代码规模变大后就很难判断每个变量的用途,因此更推荐有明确含义的名字。

定义变量后,可以读取它的值:

python 复制代码
a = 10
print(a)

也可以重新赋值,修改变量的值:

python 复制代码
a = 20
print(a)

在 Python 中,定义变量和修改变量都使用 =,从写法上看没有明显区别。还可以把一个变量的值赋给另一个变量:

python 复制代码
a = 10
b = 20
a = b
print(a)
print(b)

执行 a = b 后,变量 b 的值被赋给 a,因此二者输出的值相同。

2.3 Python 的基本数据类型

变量不仅能保存数字,还能保存文本、真假状态等不同种类的数据。为了区分这些数据,Python 引入了类型。与 C++、Java 等语言不同,Python 不需要在定义变量时显式指定类型,变量类型会在赋值时确定。

整数。 使用 int 表示整数,可以通过内置函数 type 查看变量类型:

python 复制代码
a = 10
print(type(a))

Python 的 int 表示范围没有固定上限。只要内存足够,理论上可以表示非常大的整数。

浮点数。 小数使用 float 表示:

python 复制代码
a = 0.5
print(type(a))

Python 的小数只有 float 一种类型,没有 double。Python 的 float 相当于 C++ 或 Java 中的双精度浮点数,占用更多内存,同时具有更高精度,大约可以精确到小数点后 15 位。

字符串。 使用单引号或双引号包裹的内容称为字符串,用于表示文本:

python 复制代码
a = 'hello'
print(type(a))

在 Python 中,单引号字符串与双引号字符串没有区别,'hello'"hello" 完全等价。可以使用 len 获取字符串长度:

python 复制代码
a = 'hello'
print(len(a))

两个字符串可以通过 + 拼接:

python 复制代码
a = 'hello'
b = 'world'
print(a + b)

这里的 + 进行的是字符串拼接。字符串不能直接与整数或浮点数相加

布尔值。 布尔类型只有 TrueFalse 两个取值,分别表示真和假:

python 复制代码
a = True
print(type(a))

b = False
print(type(b))

布尔值在后续的逻辑判断中非常重要。除了以上类型,Python 还有 listtupledict 和自定义类型等,这些内容后续再展开。

类型 典型值 主要用途或特点
int 10 表示整数,范围没有固定上限
float 0.5 表示小数,相当于双精度浮点数
str 'hello' 表示文本,可使用 + 拼接
bool TrueFalse 表示逻辑上的真与假

2.4 为什么需要类型

类型首先决定数据在内存中占据多大空间。例如,一个 float 数据占用 8 个字节。计算机使用二进制表示数据,一个二进制位称为一个比特 ,8 个二进制位称为一个字节 (Byte),因此一个 float 对应 64 个二进制位。

类型还约定了数据能够进行哪些操作。intfloat 可以进行 +-*/ 等算术运算;str 可以使用 + 拼接,也可以使用 len 获取长度,但不能进行减法、乘法和除法。

类型系统是在对数据进行"归类"。相同类型的数据通常具有相似的特性和使用规则。

2.5 动态类型特性

Python 变量的类型可以在程序运行过程中发生变化,这种特性称为动态类型

python 复制代码
a = 10
print(type(a))

a = 'hello'
print(type(a))

程序刚开始执行时,aint;重新赋值后,a 变成了 str。C++、Java 等语言通常不允许变量在定义后改变类型,这种特性称为静态类型

特性 动态类型 静态类型
类型能否在运行中变化 可以 通常不可以
课件中的代表语言 Python C++、Java
主要影响 中小型程序可减少代码量;大型程序会提高模块交互成本 变量定义后类型固定

动态类型是一把双刃剑:对于中小型程序,它可以明显减少代码量;对于大型程序,类型会在运行中变化,也可能增加不同模块之间的理解和交互成本。

3. 注释

3.1 注释的作用和语法

注释是一种特殊代码,不会影响程序执行,但能解释代码的作用和执行逻辑,帮助开发者阅读程序。给前面的方差代码加一行说明,目的就一目了然了:

python 复制代码
# 计算 4 个数字 67.5, 89.0, 12.9, 32.2 的方差
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)

代码首先要容易理解,其次才是执行正确。注释不只是写给别人看的,也是写给几个月之后可能已经忘记上下文的自己看的。

Python 中有两种常见的注释风格。第一种是以 # 开头的注释行:

python 复制代码
# 这是一行注释。

第二种是由三引号包裹的文档字符串。它可以包含多行内容,通常放在文件、函数或类的开头,三双引号和三单引号的写法等价:

python 复制代码
"""
这是文档字符串
这是文档字符串
"""

3.2 注释的书写规范

注释不是越多越好,关键是准确、适量并且便于维护。

规范 说明
内容准确 注释应与代码保持一致,代码修改后要及时更新注释
篇幅合理 既不能过于简略,也不应长篇大论
使用中文 国内公司一般要求使用中文注释,外企另当别论
积极向上 注释中不要出现负面、攻击性或不专业的内容

4. 输入输出

4.1 程序如何与用户交互

程序需要与用户交互。用户把信息传给程序的过程称为输入 ,程序把结果展示给用户的过程称为输出

控制台是最基本的输入输出方式:用户通过控制台输入字符串,程序再通过控制台打印字符串。PyCharm 运行程序时下方弹出的窗口,以及 Windows 自带的 cmd,都可以看作控制台。

图形化界面则是更常见的交互方式,例如 QQ、浏览器和 Steam,用户通过窗口和按钮操作。Python 也可以开发图形化程序,但图形化界面本身是一个较大的话题,这里暂不展开。

4.2 通过控制台输出

Python 使用 print 把内容输出到控制台:

python 复制代码
print('hello')

除了字符串,print 还可以输出其他类型的变量:

python 复制代码
a = 10
print(a)

b = True
print(b)

如果输出内容需要混合字符串和变量,可以使用 f-string

python 复制代码
num = 10
print(f'num = {num}')

f 为前缀的字符串称为 f-string,其中可以使用 {} 嵌入变量或表达式。Python 还支持其他字符串格式化方式,这里先掌握最基本的 f-string 即可。

4.3 通过控制台输入与类型转换

Python 使用 input 从控制台读取用户输入:

python 复制代码
num = 0
num = input('请输入一个整数: ')
print(f'你输入的整数是 {num}')

input 的参数相当于提示信息,也可以省略。需要特别注意:input 的返回值始终是字符串类型 。因此,下面的程序执行 a + b 时,得到的是两个字符串的拼接结果,而不是整数相加:

python 复制代码
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')

如果要进行算术运算,需要先完成类型转换:

python 复制代码
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')

int() 可以把数据转换为 int,类似地,float()bool()str() 可以完成对应的类型转换。

下面输入四个小数,再计算平均值:

python 复制代码
a = input('请输入第一个数字: ')
b = input('请输入第二个数字: ')
c = input('请输入第三个数字: ')
d = input('请输入第四个数字: ')

a = float(a)
b = float(b)
c = float(c)
d = float(d)

avg = (a + b + c + d) / 4
print(f'平均值: {avg}')

这段代码为了输入四个数字执行了四次 input。如果要读取任意多个数字,就需要使用循环,后续再介绍。

5. 运算符

5.1 算术运算符

+-*/%**// 都属于算术运算符。

运算符 作用 需要注意的地方
+-* 加、减、乘 遵循先乘除后加减的顺序
/ 除法 除数不能为 0;整数相除也可能得到小数
% 求余数 不是百分号含义
** 乘方 可以计算整数次方和小数次方
// 取整除法(地板除) 舍弃小数并向下取整,不是四舍五入

除数为 0 时,程序会抛出异常并停止继续执行:

python 复制代码
print(10 / 0)

异常是编程语言中的常见机制,表示程序运行过程中出现了意外情况,导致程序无法继续向下执行。

Python 使用 / 时,即使是两个整数相除,结果也可能是小数:

python 复制代码
print(1 / 2)

% 用于求余数。例如 7 除以 2,商为 3,余数为 1

python 复制代码
print(7 % 2)

** 用于乘方,并且可以计算小数次方:

python 复制代码
print(4 ** 2)
print(4 ** 0.5)

// 是取整除法,也叫地板除。它会向下取整,因此负数计算时尤其值得留意:

python 复制代码
print(7 // 2)
print(-7 // 2)

5.2 关系运算符

<<=>>===!= 用于比较操作数之间的关系。关系成立时,表达式返回 True;关系不成立时,返回 False

运算符 含义
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于

关系运算符可以比较整数和浮点数:

python 复制代码
a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

也可以比较字符串:

python 复制代码
a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

字符串可以直接使用 ==!= 判断内容是否相等。比较大小时采用字典序:想象一本按字母顺序排列的英文词典,先比较第一个字母;第一个字母相同时,再比较第二个字母。单词在词典中越靠前,就认为越小。

对于浮点数,不要直接使用 == 判断是否相等:

python 复制代码
print(0.1 + 0.2 == 0.3)

浮点数在计算机中的表示并不精确,计算过程可能产生非常小的误差:

python 复制代码
print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)

0.1 + 0.2 的结果会带有一个很小的"尾巴",而 == 会严格比较,所以结果为 False。这不是 Python 独有的问题,而是 IEEE 754 浮点数格式带来的现象。

正确思路是不再要求严格相等,而是判断差值是否处于允许的误差范围内:

python 复制代码
a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)

实际工程中误差在所难免,只要把误差控制在合理范围内即可。

5.3 逻辑运算符

Python 的逻辑运算符包括 andornot

运算符 含义 结果规则
and 并且 两侧都为 True 时才为 True,一假则假
or 或者 两侧都为 False 时才为 False,一真则真
not 逻辑取反 True 变为 FalseFalse 变为 True
python 复制代码
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)

Python 还支持连续比较,a < b and b < c 等价于 a < b < c,这一写法与很多编程语言不同。

逻辑运算还存在短路求值

  • 对于 and,如果左侧表达式为 False,整体一定为 False,右侧表达式不再执行。
  • 对于 or,如果左侧表达式为 True,整体一定为 True,右侧表达式不再执行。
python 复制代码
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

两行代码都没有抛出除以零异常,说明右侧的 10 / 0 并未真正执行。

5.4 赋值运算符

= 表示赋值,需要和表示相等的 == 区分。除了最基本的单变量赋值,Python 还支持链式赋值和多元赋值:

python 复制代码
a = b = 10
python 复制代码
a, b = 10, 20

交换两个变量时,基础写法需要借助临时变量 tmp

python 复制代码
a = 10
b = 20

tmp = a
a = b
b = tmp

使用多元赋值可以直接完成交换:

python 复制代码
a = 10
b = 20

a, b = b, a

Python 还提供 +=-=*=/=%= 等复合赋值运算符。a += 1 等价于 a = a + 1,其他复合赋值写法同理:

python 复制代码
a = 10
a = a + 1
print(a)

b = 10
b += 1
print(b)

与 C++、Java 不同,Python 不支持 ++-- 自增、自减运算符,需要使用 += 1-= 1。这样也避开了前置和后置写法容易混淆的问题。

除了以上内容,Python 还有身份运算符 isis not,成员运算符 innot in,以及位运算符 &|~^<<>> 等,这里暂不介绍。

6. 自测练习

完成下面三道题,检验自己是否真正理解了变量、类型和基本运算。建议先独立作答,再回到前文逐项核对。

(1)多选:以下关于变量之间加法运算的说法,正确的是:

  • A. Python 中的字符串之间能够相加。
  • B. Python 中的字符串可以和整数相加。
  • C. Python 中的整数可以和浮点数相加。
  • D. Python 中的整数可以和布尔值相加。

(2)单选:以下关于类型的说法,正确的是:

  • A. Python 中既有字符串类型,也有字符类型。
  • B. Python 中既有 float,也有 double
  • C. Python 中既有 int,也有 long
  • D. Python 中的整数表示范围无上限。

(3)单选:以下 Python 代码,合法的是:

python 复制代码
# A
int a = 10

# B
a = 10;

# C
a = true

# D
a = 'aaa' + 10

答案如下:

  1. 多选:A、C、D

    A:字符串之间可以使用 + 拼接。

    B:字符串不能直接与整数相加。

    C:整数可以与浮点数相加,结果通常是 float。

    D:布尔值可参与整数运算,True 相当于 1,False 相当于 0。

  2. 单选:D

    Python 的整数使用 int,其表示范围没有固定上限,主要受可用内存限制。

  3. 单选:B

    a = 10;

    这段代码合法,只是末尾的分号没有必要。其他选项分别存在语法错误、名称错误或类型错误。

总结

这一节从常量和表达式起步,认识了变量保存中间结果的作用,以及 intfloatstrbool 四种基本类型。Python 具有动态类型特性,变量类型可以在运行过程中改变;类型既影响数据的内存占用,也约定了数据能够执行的操作。随后,我们学习了注释的两种写法,掌握了通过 printinput 完成控制台交互的方法,并明确了 input 返回字符串、参与计算前通常需要类型转换。最后梳理了算术、关系、逻辑和赋值运算符,重点认识了地板除、浮点数误差、短路求值、多元赋值和复合赋值。掌握这些内容后,就具备了继续学习逻辑判断、编写更复杂程序的语法基础。

相关推荐
caimouse1 小时前
ReactOS 窗口系统分析(5):可见区域与窗口 DC — vis.c + windc.c
c语言·开发语言
Zane19941 小时前
调用了 async 函数却没执行?一文讲透协程、event loop 与 await
后端·python
OPEN-F1 小时前
Python进阶教程:装饰器与生成器深入
开发语言·python
zhipujiaoyu1 小时前
2026年大数据专科何去何从?就业前景、发展趋势全揭秘!
大数据·python
l1258652 小时前
# RAG噪声知识库治理:一致性与可信度的四层防线设计
数据库·人工智能·python·自然语言处理·langchain
zoujiahui_20182 小时前
别再只写 np.random.seed() 了:default_rng 与 np.random、random 到底差在哪?
python
Patrick在香港2 小时前
Claude Agent 进阶:4 种工具调用编排模式,让 0820 那 13 个 endpoint 并行起来
python·ai·ai编程
qq_513728042 小时前
StaleElementReferenceException(陈旧元素引用异常)
python
千里码aicood3 小时前
基于Python的电商数据采集系统(大数据+爬虫)
开发语言·python