抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

从输出、变量到字符串格式化与条件判断

复习建议: 先理解概念,再亲手敲一遍示例;遇到报错时重点检查大小写、括号、引号和缩进。

1. print():输出内容

print() 是 Python 的内置函数,用于把文字、变量或计算结果输出到控制台。

1
2
3
print("Hello World")
print("*" * 10)
print(2 + 3)
  • 字符串乘以整数,表示把字符串重复指定次数。
  • Python 代码应使用英文半角括号 (),不要使用中文全角括号 ()。

2. 注释

以 # 开头的内容是注释,Python 不会执行它。注释用于解释代码、记录思路或临时停用一行代码。

1
2
# 这是单行注释
print("你好") # 也可以写在代码后面

3. 布尔值:True 与 False

布尔类型 bool 只有 True 和 False 两个值。在数学运算中,True 相当于 1,False 相当于 0。

1
2
3
4
print(True + 1)   # 2
print(True - 1) # 0
print(False + 1) # 1
print(False - 1) # -1

注意: True 和 False 的首字母必须大写。

4. 变量与赋值

变量是用于保存数据的名称,可以把它理解为一个贴了标签的容器。等号 = 表示“把右边的值赋给左边的变量”。

1
2
3
num = 200700
num = num + 500000 * 2
print(num) # 1200700
1
2
3
4
5
6
a = 20
b = 30
c = a # c 得到 20
a = b # a 得到 30
b = c # b 得到 20
print(a, b) # 30 20

5. 标识符(变量名)规则

  • 可以包含英文字母、数字和下划线。
  • 不能以数字开头。
  • 不能使用 if、while、for 等 Python 关键字。
  • 区分大小写:name 和 Name 是两个不同变量。
  • 建议使用有意义的名称;多个单词通常用下划线连接。
1
2
3
4
user_name = "黄圣坤"  # 正确
age21 = 21 # 正确
# 21age = 21 # 错误:数字不能开头
# if = 10 # 错误:if 是关键字

6. 运算符

运算符是用来进行计算、比较或逻辑判断的符号。常见的运算符包括算术运算符、赋值运算符、比较运算符和逻辑运算符。

6.1 算术运算符

算术运算符用于数字计算:

  • +:加法;-:减法;*:乘法;/:除法,结果通常是浮点数。
  • //:整除,只保留商的整数部分;%:取余数;**:幂运算。
1
2
3
4
5
6
7
print(10 + 3)   # 13
print(10 - 3) # 7
print(10 * 3) # 30
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(10 % 3) # 1
print(10 ** 3) # 1000

6.2 赋值运算符

赋值运算符用于给变量保存数据。最基本的赋值运算符是 =,还可以把运算和赋值合并:

1
2
3
4
5
6
num = 10
num += 3 # 等价于 num = num + 3
num -= 2 # 等价于 num = num - 2
num *= 4 # 等价于 num = num * 4
num /= 2 # 等价于 num = num / 2
print(num)
  • 常见组合赋值:+=、-=、*=、/=、//=、%=、**=。

6.3 比较运算符

比较运算符用于比较两个值,结果一定是布尔值 True 或 False。

1
2
3
4
5
6
7
a = 10
print(a == 10) # True,是否相等
print(a != 5) # True,是否不相等
print(a > 5) # True,大于
print(a < 5) # False,小于
print(a >= 10) # True,大于或等于
print(a <= 9) # False,小于或等于

易错点: = 是赋值;== 才是比较两个值是否相等。

6.4 逻辑运算符

逻辑运算符用于组合多个条件:

  • and:并且,所有条件都为 True,结果才为 True。
  • or:或者,只要有一个条件为 True,结果就是 True。
  • not:取反,True 变 False,False 变 True。
1
2
3
4
age = 21
print(age >= 18 and age <= 60) # True
print(age < 18 or age > 60) # False
print(not (age == 21)) # False

记忆: 比较运算符通常先得到 True/False,再用 and、or、not 组合条件。

7. if 条件判断

if 表示“如果”。程序会先判断条件:条件为 True 时,执行缩进的代码;条件为 False 时,跳过这段代码。

1
2
if 条件:
条件成立时执行的代码
  • 条件后面必须有英文冒号 :。
  • 下一行必须缩进,通常使用 4 个空格。Python 通过缩进判断代码的归属。
1
2
3
4
score = int(input("请输入你的高考分数:"))

if score > 680:
print("欢迎你来到清华大学")

如果输入 700,条件 score > 680 为 True,会执行输出;如果输入 680 或更低,条件为 False,程序会跳过输出。

7.1 if、else 与 elif

else 表示“否则”,当 if 条件不成立时执行;elif 表示“否则如果”,用于判断多个条件。

1
2
3
4
5
6
7
8
9
10
score = int(input("请输入分数:"))

if score >= 680:
print("优秀")
elif score >= 600:
print("良好")
elif score >= 450:
print("及格")
else:
print("需要继续努力")

程序会从上到下判断,执行第一个成立的分支,后面的分支不会继续执行。

if…elif…else 流程树

流程从“开始”进入条件 1:条件 1 为 True 时执行操作 1;条件 1 为 False 时继续判断条件 2。条件 2 为 True 时执行操作 2,否则执行操作 3。

1
2
3
4
5
6
if 条件1:
操作1
elif 条件2:
操作2
else:
操作3

理解重点: elif 只有在前面的 if 条件为 False 时才会被判断;else 不写条件,用来处理前面所有条件都不成立的情况。

7.2 在 if 中使用比较和逻辑运算符

1
2
3
4
5
6
7
age = 20

if age >= 18 and age <= 60:
print("属于成年人")

if not (18 <= age <= 60):
print("不属于这个年龄范围")

比较运算符会得到 True 或 False,and、or、not 可以把多个条件组合起来。Python 还支持连续比较:10 <= num <= 20。

易错点: if score > 680: 与 if score >= 680: 不同;前者不包含 680,后者包含 680。

7.3 if…else 重点总结

if…else 让程序在两条路线中选择一条:if 条件为 True 时执行 if 分支;条件为 False 时执行 else 分支,两个分支只会执行其中一个。

1
2
3
4
if 条件:
条件成立时执行
else:
条件不成立时执行

账号和密码登录判断示例:

1
2
3
4
5
6
7
8
9
10
11
user = input("请输入您的用户名:")
password = input("请输入您的密码:")

if user == "admin" and password == "666888":
print("恭喜你登录成功!\n欢迎来到b站")
elif user == "root" and password == "547527":
print("恭喜你登录成功!\n欢迎来到b站")
elif user == "hkk" and password == "110603":
print("恭喜你登录成功!\n欢迎来到b站")
else:
print("账号或者密码错误,请您重新输入")

这个程序会从上到下依次检查三组账号和密码;只要其中一组同时匹配,就输出登录成功。三组条件都不成立时,才会执行 else。

  • if 和 else 后面都必须有英文冒号 :。
  • 分支代码必须缩进,通常使用 4 个空格。
  • else 后面不能再写条件;需要继续判断时使用 elif。
  • 判断相等使用 ==,给变量赋值使用 =。
  • else 必须与对应的 if 保持相同缩进。

安全提醒: 这个程序适合练习条件判断。实际项目不要把真实账号和密码直接写在代码中,也不要用明文方式保存密码。

记忆口诀: if:如果成立;elif:否则再判断;else:以上条件都不成立。

7.4 使用 if、elif、else 判断正数、负数和 0

当程序需要处理三个或更多互斥情况时,可以组合使用 if、elif 和 else:

  • if:先判断第一个条件。
  • elif:前面的条件不成立时,再判断新的条件。
  • else:前面的所有条件都不成立时执行,不需要写条件。
  • 程序会从上到下判断,只执行第一个成立的分支。
1
2
3
4
5
6
7
8
num = int(input("请输入一个数字:"))

if num > 0:
print(f"{num} 是正数")
elif num < 0:
print(f"{num} 是负数")
else:
print("0 既不是正数,也不是负数")

判断过程:num > 0 时输出正数;否则继续判断 num < 0;如果两个条件都不成立,那么 num 只能是 0,因此由 else 处理。

易错点: num > 0 已经排除了 0,不需要再写 num > 0 and num != 0。若题目明确保证输入不为 0,也可以只使用 if…else 判断正数和负数。

7.5 条件判断的嵌套

条件判断的嵌套,是指在一个 if、elif 或 else 分支中继续编写另一组 if…elif…else。外层条件先决定是否进入该分支,进入后再判断内层条件。

1
2
3
4
5
6
7
8
9
10
11
12
13
age = int(input("请输入你的年龄:"))

if age >= 18:
score = int(input("请输入你的考试成绩:"))

if score >= 90:
print("成年人,成绩优秀")
elif score >= 60:
print("成年人,成绩及格")
else:
print("成年人,但成绩不及格")
else:
print("你还未成年")

执行过程:程序先使用外层 if 判断是否成年;只有 age >= 18 成立时,才会继续输入并判断成绩。内层 if…elif…else 用于区分优秀、及格和不及格;未成年时直接执行外层 else。

  • 内层代码通常比外层多缩进 4 个空格。
  • 内层的 elif 和 else 与内层 if 对齐。
  • 外层的 else 与外层 if 对齐。
  • 应避免嵌套层数过多,否则代码会难以阅读。

记忆: 先判断外层条件,再判断内层条件;缩进决定每个 else 属于哪一个 if。

8. match…case 模式匹配

match…case 用于把一个值与多个模式依次匹配。它适合菜单选项、星期、状态代码等“一个值对应多种结果”的场景,需要 Python 3.10 或更高版本。

基本结构:

1
2
3
4
5
6
7
match 要匹配的数据:
case 模式1:
匹配模式1时执行
case 模式2:
匹配模式2时执行
case _:
前面都不匹配时执行

星期安排示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
day = input("请输入星期(1-7):")

match day:
case "1":
print("周一:工作会议日")
case "2":
print("周二:学习培训日")
case "3":
print("周三:项目开发日")
case "4":
print("周四:代码审查日")
case "5":
print("周五:总结规划日")
case "6" | "7":
print("周末:休息放松日")
case _:
print("输入的数据有误")
  • match day:开始匹配变量 day 的值。
  • case “1”:day 等于字符串 “1” 时执行对应代码。
  • case “6” | “7”:竖线 | 表示匹配 “6” 或 “7”。
  • case _:通配分支,作用类似 if…elif…else 中最后的 else。
  • input() 返回字符串,因此 case 中的 1 到 7 要加引号。
  • 程序只执行第一个匹配成功的 case,随后结束整个 match 结构。

易错点: case _ 通常放在最后;如果放在前面,它会先匹配所有情况,后面的 case 就没有机会执行。

8.1 match…case 简易计算器

下面的程序先接收两个数字和一个运算符,再通过 match…case 选择对应的加、减、乘、除运算:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a = float(input("请输入一个数:"))
b = input("请输入运算符(+、-、*、/):")
c = float(input("请输入另外一个数:"))

match b:
case "+":
print(f"{a} + {c} = {a + c}")
case "-":
print(f"{a} - {c} = {a - c}")
case "*":
print(f"{a} * {c} = {a * c}")
case "/":
if c != 0:
print(f"{a} / {c} = {a / c}")
else:
print("除数不能为 0")
case _:
print("您输入的运算符有误")
  • float(input(…)):把输入的数据转换为浮点数,因此可以计算整数和小数。
  • match b:根据用户输入的运算符选择对应分支。
  • 每个 case 负责一种运算,f-string 同时显示算式和计算结果。
  • 除法分支中嵌套 if…else,用于防止除数 c 为 0 时发生 ZeroDivisionError。
  • case _:当前面的四种运算符都不匹配时,提示运算符输入错误。

易错点: b 是 input() 得到的字符串,所以 +、-、*、/ 必须写在引号中。case _ 后面直接写冒号,推荐写成 case _:。

9. 常见数据类型与 type()

type() 用来查看一个数据或变量的类型。

1
2
3
4
5
print(type("hello"))  # str:字符串
print(type(10)) # int:整数
print(type(9.1)) # float:浮点数
print(type(True)) # bool:布尔值
print(type(None)) # NoneType:空值类型

易错点: 正确写法是 bool 和 NoneType;Python 区分大小写。

10. isinstance():判断类型

isinstance(数据, 类型) 用来判断数据是否属于指定类型,结果是 True 或 False。

1
2
3
num = 100
print(isinstance(num, int)) # True
print(isinstance(num, str)) # False

11. 字符串

字符串可以用单引号、双引号或三引号表示。三引号适合保存多行内容。

1
2
3
4
5
6
7
8
name = '黄圣坤'
message = "Hello World"

apple = """
hello:
欢迎大家来到我的世界
"""
print(apple)

如果字符串内部含有单引号,可以使用反斜杠转义,也可以改用双引号包围字符串。

1
2
sentence1 = 'It\'s very interesting'
sentence2 = "It's very interesting"

12. 常见转义字符

  • \n:换行
  • \t:制表符,产生缩进效果
  • ':表示单引号
  • ":表示双引号
  • \:表示反斜杠
  • \r:回到当前行开头
1
print("\t从现在开始\n你必须叫我大哥")

13. 字符串拼接

使用 + 拼接

加号可以连接字符串,但参与拼接的数据通常都要是字符串。

1
2
3
4
5
6
msg1 = "人生苦短,"
msg2 = "我用 Python"
print("鬼叔说:" + msg1 + msg2)

age = 21
print("今年" + str(age) + "岁")

相邻字符串自动连接

1
2
s1 = "人生苦短," "我用 Python"
print(s1)

14. % 占位符

%s 会预留一个位置,并把变量转换为字符串后放进去。多个变量需要写在元组中。

1
2
3
4
name = "黄圣坤"
age = 21
print("大家好,我叫%s。" % name)
print("我叫%s,今年%d岁。" % (name, age))
  • %s:字符串
  • %d:整数
  • %f:浮点数

15. 更推荐的 f-string

现代 Python 更推荐 f-string:在字符串前加 f,把变量或表达式写进大括号 {},阅读和修改都更方便。

1
2
3
4
5
6
7
name = "黄圣坤"
age = 21
major = "GIS"
likes = "Python、Java、Codex 和 Claude"

print(f"大家好,我是{name},今年{age}岁。")
print(f"我喜欢{likes},学习的专业是{major}。")

建议: 年龄属于数值,最好写成 age = 21,而不是 age = “21”。

16. 用户输入与类型转换

input() 用来获取用户输入。无论用户输入数字还是文字,input() 得到的结果默认都是字符串(str)。

1
2
password = input("请输入您的银行卡密码:")
print(f"密码正确:{password}")

如果要把输入的金额用于计算,需要先用 int() 或 float() 转换类型。

1
2
3
total = 10000
num = input("请输入你要取款的金额:")
print(f"取款后你卡里的金额为:{total - int(num)}")

常见类型转换函数:

  • int():转换为整数,例如 int(“10”) 得到 10。
  • float():转换为浮点数,例如 float(“0.5”) 得到 0.5。
  • str():转换为字符串,例如 str(21) 得到 “21”。
  • bool():转换为布尔值;空字符串、0、None 通常会得到 False,其他大多数值会得到 True。
1
2
3
4
5
print(int("10"))
print(float("0.5"))
print(str(21))
print(bool(0)) # False
print(bool("hello")) # True

安全提醒: 示例为了演示输出而打印了 password;实际程序不应直接显示或保存用户密码。

易错点: bool(“False”) 的结果是 True,因为非空字符串都被视为真;不要用它直接判断用户输入的文字。

15.1 输入转换与范围判断

input() 返回的是字符串。即使在 f-string 中写了 int(num),也只是把显示出来的那一部分临时转换,不会改变变量 num 本身。

1
2
3
4
num = input("请输入一个整数:")
print(f"这个数是:{int(num)}")
# 这里的 num 仍然是字符串
# num >= 10 会报错:字符串不能直接和整数比较

推荐在接收输入时就完成转换,并把转换后的结果保存回变量:

1
2
num = int(input("请输入一个整数:"))
print(f"这个数是否在10到20之间:{10 <= num <= 20}")

Python 支持连续比较,10 <= num <= 20 等价于 num >= 10 and num <= 20。

记忆: 转换表达式 int(num) 不会自动修改 num;想改变变量类型,需要写成 num = int(num)。

17. 浮点数精度问题

有时计算 0.5 - 0.4,结果会显示为 0.09999999999999998。这不是代码错误,而是计算机表示浮点数时的精度限制。

计算机使用二进制保存小数,而某些十进制小数(例如 0.4)无法被二进制精确表示,只能保存一个非常接近的近似值。相减后,这个微小误差就可能显示出来。

1
2
3
x = 0.5
y = 0.4
print(x - y) # 0.09999999999999998

只需要正常显示时,可以用 round() 保留小数位,或使用格式化输出:

1
2
print(round(x - y, 2))   # 0.1
print(f"{x - y:.2f}") # 0.10

如果是金额等需要精确计算的场景,可以使用 Decimal:

1
2
3
4
5
from decimal import Decimal

x = Decimal("0.5")
y = Decimal("0.4")
print(x - y) # 0.1

记忆: 浮点数适合一般科学计算;需要精确小数时,优先考虑 Decimal。

18. 综合练习

请先自己写一遍,再运行并观察结果:

1
2
3
4
5
6
7
8
name = "黄圣坤"
age = 21
major = "GIS"
likes = "Python、Java、Codex 和 Claude"

print(f"大家好,我是{name},今年{age}岁。")
print(f"我喜欢{likes},学习的专业是{major}。")
print("欢迎大家来到我的世界!" * 2)

复习检查清单

  • 我能用 print() 输出文字、变量和计算结果。
  • 我知道 = 是赋值,而不是数学中的等号。
  • 我会使用 if、elif 和 else 编写多分支判断。
  • 我能看懂并编写嵌套的条件判断。
  • 我会使用 match…case 处理多个固定选项。
  • 我能说出 str、int、float、bool 和 NoneType。
  • 我会使用 type() 和 isinstance()。
  • 我理解常见转义字符。
  • 我会用 +、% 占位符和 f-string 组织字符串。

评论