Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python 中 if 语句的一般形式如下所示:
if condition_1:
statement_block_1
流程图如下所示:
这种if语句只有在符合条件的时候才会执行代码块内的代码,是一种比较常见的用法。
另一种常见的用法是:
if condition_1:
statement_block_1
else:
statement_block_2
流程图如下所示:
这种语句是一种常用的if-else语句,通常用于二分支结构的条件语句代码。
在一些时候,我们可能需要多分支的条件语句代码,可以在if-else语句中混合elif语句进行使用:
Python 中用 elif 代替了else if,所以if语句的关键字为:if – elif – else。
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
流程图如下所示:
如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句,如果 "condition_1" 为 False,将判断 "condition_2",如果"condition_2" 为 True 将执行 "statement_block_2" 块语句,如果 "condition_2" 为 False,将执行"statement_block_3"块语句。
使用第一种常用的if语句搭配合适的条件可以实现第二种和第三种语句的全部效果,但在执行效率和代码可读性上会变得比较糟糕。
注意:
在其他语言(比如说经典的C语言)中有一种多分支条件判断语句,可以进行模式匹配(通俗的讲,就是将传入的内容跟多个已存在的样例进行比较,找到相同的案例并按照该案例的代码进行处理,如果没有相同案例就按默认案例进行处理,可以查看其他编程语言的条件语句的Switch相关部分内容进行比较参考)。在python3.10中也引入了这样的新特性。
match-case语句的结构一般如下所示:
match variable: #这里的variable是需要判断的内容
case ["quit"]:
statement_block_1 # 对应案例的执行代码,当variable="quit"时执行statement_block_1 case ["go", direction]:
statement_block_2
case ["drop", *objects]:
statement_block_3
... # 其他的case语句
case _: #如果上面的case语句没有命中,则执行这个代码块,类似于Switch的default
statement_block_default
一个match语句的使用示例:
def http_error(status):
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Something's wrong with the Internet"
上述代码等价于:
def http_error(status):
if status == 400:
return "Bad request"
elif status == 404:
return "Not found"
elif status == 418:
return "I'm a teapot"
else:
return "Something's wrong with the Internet"
关于模式匹配还有更多的用法,可以参考PEP636进行详细的学习。
以下实例演示了狗的年龄计算判断:
age = int(input("Age of the dog: "))
print()
if age < 0:
print("This can hardly be true!")
elif age == 1:
print("about 14 human years")
elif age == 2:
print("about 22 human years")
elif age > 2:
human = 22 + (age -2)*5
print("Human years: ", human)
###
input('press Return>')
将以上脚本保存在 dog.py 文件中,并执行该脚本:
python dog.py
Age of the dog: 1
about 14 human years
以下为 if 中常用的操作运算符:
操作符 | 描述 |
---|---|
< | 小于 |
<= | 小于或等于 |
> | 大于 |
>= | 大于或等于 |
== | 等于,比较对象是否相等 |
!= | 不等于 |
只要返回结果为布尔型(true或者false)的,都可以作为if的条件,所以在之前的集合等内容中涉及到的判断元素是否在集合中的in
和not in
,都可以作为if的条件。
# 程序演示了 == 操作符
# 使用数字
print(5 == 6)
# 使用变量
x = 5
y = 8
print(x == y)
以上实例输出结果:
False
False
使用in
和not in
作为判断条件:
thisset = set(("Google", "W3Cschool", "Taobao"))
if "W3Cschool" in thisset:
print("该元素在列表中")
if "baidu" not in thisset:
print("该元素不在列表中")
运行结果如下:
该元素在列表中
该元素不在列表中
以下示例使用if语句来实现一个猜数字游戏(建议在本地环境尝试):
#!/usr/bin/python3
# 该实例演示了数字猜谜游戏
number = 7
guess = -1
print("猜数字!")
while guess != number:
guess = int(input("请输入你要猜的数字"))
if guess == number:
print("你猜中了,真厉害!")
elif guess < number:
print("猜小了,再猜猜?")
elif guess > number:
print("猜大了,在猜猜?")