Python教程[分支の章]4:分支语句,bool类型

-呈阶梯状分布- 57 次阅读 1461 字 发布于 2026-05-23 最后更新于 2026-05-23 Python教程


分支语句:if,else,elif

在生活中,我们经常需要进行选择,比如你可以根据今天天气是晴天还是雨天,决定出门带不带伞。
在Python中我们也有根据条件选择执行不同代码的语句,称作分支语句。

weather = "rain"
if weather == "rain":
    print("带伞")
else:
    print("不带伞")

上面代码中的后四行就是一个分支语句,意思是如果天气是“雨天”,则输出“带伞”,否则就输出“不带伞”。
if是如果的意思,else是否则的意思,这就是一个最基础的if-else结构。
你可以看到,正如前面所说,因为“=”被用作赋值符号了,所以Python的等于号是“==”。
接下来详细介绍这个结构的格式:

if 条件:
    条件成立执行的代码
    条件成立执行的代码
    ......
    条件成立执行的代码
else:
    条件不成立执行的代码
    条件不成立执行的代码
    ......
    条件不成立执行的代码

第一行为if,空格,条件(如weather == "rain"),满足条件则执行if下的代码(代码前有四个空格,这四个空格称为缩进,缩进后的代码有点像是挂在了if下面,用于标注这些代码在if的管理下),如果不满足if空格后的条件,则执行else下的代码(也需要缩进,标注代码在else的管理下)。

关于缩进再提一点。缩进为四个半角空格,可以明显看到有缩进的代码比一般的代码更靠右,像是挂在了其他代码下。
正常的代码都需要顶格写,也就是没缩进。只有在某些特殊结构,比如这里的分支结构和后面会学的其他结构中,当代码可能不被执行或者被多次执行时,才需要缩进来与正常代码区分开。
缩进是必选项,不是可选项。不正确使用缩进可能导致程序不符合预期甚至报错。

print("hello")  # 顶格代码正常执行
a = input("请输入年龄:")  # 顶格代码正常执行
a = int(a)  # 顶格代码正常执行
print("ladder")  # 顶格代码正常执行
if a >= 18:  # if+空格+条件+冒号
    print("成年了")  # if缩进内的代码有条件执行
else:  # else+冒号
    print("未成年")  # else缩进内的代码有条件执行
print("step")  # 顶格代码正常执行

你可以只写if,而不写else,这样如果条件不满足时就什么也不会发生。但是,你不能在if或else的缩进内什么都不写,这是会报错的,这时就可以用pass作为空代码代替。
pass的作用就是什么都不做,纯粹的占位,不会执行任何代码。

num = 999
if num >= 100:
    pass
else:
    print("小于100")
# 运行结果:
# (啥也没有)

另外,if和else必须紧紧挨着写,“if缩进内的代码”写完就直接顶格写“else:”,不能在“if缩进内的代码”和“else:”之间插入其他顶格的正常代码,否则会报错。

num = 100
if num >= 100:
    print("大于等于100")
print("我是卡在中间的顶格代码")
else:
    print("小于100")
# 运行结果:
# SyntaxError: invalid syntax(报错:语法错误)

当你需要根据多个条件选择不同代码时,你可能会这样做:

old = input("请输入年龄:")
old = int(old)
if old >= 60:
    print("老年")
if old >= 45:
    print("中年")
if old >= 18:
    print("青年")
if old >= 7:
    print("少年")
else:
    print("幼年")

观察代码你便可以看出其中的问题——当你输入70时,70能满足下面的所有条件。也就是说,除了"幼年",其他的字符串都会被输出——这显然不是我们想要的。

这时候我们就可以使用if-elif-else语句了。

old = input("请输入年龄:")
old = int(old)
if old >= 60:
    print("老年")
elif old >= 45:
    print("中年")
elif old >= 18:
    print("青年")
elif old >= 7:
    print("少年")
else:
    print("幼年")

可以看到,我把中间的几个“if”替换为了“elif”,这有什么区别,又是怎么让程序恢复到我们想要的样子?

elif,即elseif的缩写,你可以读作“否则如果”。当第一个if条件不符合时,会跳到下面的elif语句。此时,如果elif的条件满足,那么就不会再执行下面的判断。同样,如果第一个if条件符合,则下面的任何判断都不会被执行。

这么说可能有点难理解,这里给出上面那段elif代码的等效版本:

old = input("请输入年龄:")
old = int(old)
if old >= 60:
    print("老年")
else:
    if old >= 45:
        print("中年")
    else:
        if old >= 18:
            print("青年")
        else:
            if old >= 7:
                print("少年")
            else:
                print("幼年")

可以看到,这是一个多层嵌套的if-else语句。如果你理解了if-else的逻辑,那么相信你不难看懂这段代码。你理解这段代码后,再与上面elif的那段代码对比,就能理解elif的机制——else-if。

数据类型:bool(布尔值)

bool类型比较容易理解。不像int有无数个数字,str有无数种字符串,bool只有两个值——True和False。
True表示真,也就是正确;False表示假,也就是错误。
这两个值在Python内都可以通过字面量生成法直接打出来,不需要双引号之类的特殊标识,但是你要记住首字母大写。

bool值可以通过逻辑判断产生,例如等式和不等式:

print("ladder" == "ladder")  # True
print("ladder" == "step")  # False

print(1 == 1)  # True
print(1 == 2)  # False
print(1 == "1")  # False

print(999 > 111)  # True
print(111 >= 111)  # True
print(-10 <= 20)  # True

print("ladder" <= 0)  # 报错:TypeError: '<=' not supported between instances of 'str' and 'int'

tip:这个代码把符号字体改了,等号应为==,大于或等于号应为>=,小于或等于号应为<=。

从上面的代码中可以看出,如果条件成立,就返回True,如果条件不成立,就返回False。
也就是说,我们在分支语句中判断条件时,其实就是在判断bool值。如果bool值为True就执行,为False就不执行。

print(type(1 == 1))
# 运行结果:
# <class 'bool'>

OK,差不多就这些,下一篇讲逻辑运算!