话说回来,刚接触写代码那会儿,总觉得程序就是一条直线,从头跑到尾,特死板。一步一步,板板正正。可现实哪是这样啊?生活里,处处都是岔路口,今天吃啥?出门带伞吗?这段代码跑不通咋办?程序要是不学会“看脸色”、“做选择”,那不跟个没感情的机器一样了?所以啊,咱们得聊聊 python if语句怎么写 这事儿,这玩意儿,就是给程序安上一颗能判断、能思考的小脑袋瓜儿,让它活过来。
if,英文意思是“如果”。在编程里,它的作用字面意思一样,就是用来设定一个条件:如果某个条件成立,那你就去干嘛干嘛;如果不成立,那再说呗。它是所有程序逻辑判断的基石,没它,你的代码永远只能傻乎乎地走一条路。
最基础的款,就是个光杆司令 if
。长啥样?喏,就这样:
python
if 某个条件是真的:
# 条件成立时,执行这里的代码块
# 注意这里的缩进!这是重点!
比如,咱们举个最简单的例子,判断一个数字是不是正数:
“`python
num = 10
if num > 0:
print(“这个数字是正数!”)
“`
运行这段代码,屏幕上会打印出“这个数字是正数!”,因为 num > 0
这个条件(10大于0)是真的。
那如果 num
是 -5 呢?
“`python
num = -5
if num > 0:
print(“这个数字是正数!”)
“`
这时候,num > 0
(-5 大于 0) 是假的,if 后面的条件不满足,那缩进的那行 print("这个数字是正数!")
就被跳过了,啥也不会打印。程序继续往下走(如果后面还有代码的话)。
看到了吗?那个条件后面的冒号 :
,还有下面的缩进!这俩货,新手最容易忘,或者搞错。我跟你说,我当年写第一个 if,不是忘了冒号,就是缩进不对,Python就一脸无辜地报错,找半天找不到哪儿不对,简直想摔键盘!那缩进,是Python的“规矩”,它告诉你,缩进同一级别的代码,都是这个 if
管辖范围内的。没缩进?对不起,不跟你玩儿,它就不认为那行代码是 if
语句体的一部分。通常咱们用4个空格或者一个Tab来缩进,但一个文件里别混着用,会疯的!选定一种方式,然后坚持下去。PyCharm这种IDE会帮你自动搞定缩进,但脑子里一定要有这个概念。
光有 if
也不够啊,万一条件不成立呢?总得有个Plan B吧?这时候 else
就登场了。它是 if
的好搭档,意思是“如果上面那个 if
的条件不是真的,那就执行我这儿的代码”。语法也很直白:跟 if
对齐,else:
然后下面同样缩进写代码。
比如刚才那个判断正数的例子,可以加上 else
来处理非正数的情况:
“`python
num = -5
if num > 0:
print(“这个数字是正数!”)
else:
print(“这个数字不是正数(可能是负数或零)!”)
“`
这回好了,当 num
是 -5 的时候,num > 0
是假的,程序跳过 if
里面的代码,直接去了 else
那里,打印出了“这个数字不是正数…”。如果 num
是 10,那还是只打印“这个数字是正数!”,跳过 else
。二选一,挺干脆的。
可现实世界哪有那么多非黑即白啊?好多时候是多选题。比如一个数,它可能是正数,可能是负数,还可能是零呢!这时候,光靠 if
和 else
就不够用了,得上 elif
。它是 else if
的缩写,专门用来处理这种“如果第一个条件不成立,那就看看第二个条件是不是成立;如果第二个也不行,再看第三个…” 连环判断的情况。
语法是:跟 if
和 else
对齐,elif 某个新条件是真的:
然后缩进写代码。它可以有很多个 elif
,一个接一个,像链条一样。最后的 else
呢?它是那个兜底的,前面所有 if
和 elif
都不成立了,才轮到它。
来看判断正负零的例子:
“`python
num = 0
if num > 0:
print(“这个数字是正数!”)
elif num < 0:
print(“这个数字是负数!”)
else:
print(“这个数字是零!”)
“`
当 num
是 0 时,先检查 num > 0
,假的。再检查 num < 0
,还是假的。好了,前面所有条件都不满足,那就执行最后的 else
里面的代码,打印出“这个数字是零!”。
if-elif-else
的组合是程序做复杂决策的利器。它的执行逻辑是:从上往下,依次检查条件。只要遇到一个条件是真的,就执行那个条件下面的代码块,然后整个 if-elif-else
结构就结束了,直接跳到这个结构后面的代码去。else
永远是最后一道防线,只有前面所有条件都试过了,没一个对得上,它才会被激活。这也就解释了为什么刚才分数评级的例子里(虽然还没写,但你可以想象),我们判断分数段时,要从最高分往最低分判断:
“`python
score = 75
if score >= 90:
print(“优秀”)
elif score >= 80:
print(“良好”) # score 75 会跳过上面两个
elif score >= 60:
print(“及格”) # 到了这里,75 >= 60 是真的,执行这块代码
else:
print(“不及格”) # 这里就不会执行了
“`
如果判断顺序反过来,先判断 score >= 60
,那一个95分的人,第一个条件 95 >= 60
就是真的了,直接被判定为“及格”,后面的“良好”和“优秀”就永远没机会了。所以,顺序很重要!
那这条件里头,到底能写点啥呢?花样可多了!最常见的就是各种比较操作符:>
大于,<
小于,==
等于(注意!不是一个等号!一个等号是赋值,比如 x = 5
是把5放进x里,而 x == 5
是问x是不是等于5。当年我就是在这儿栽了大跟头的!Debug到崩溃!),!=
不等于,>=
大于等于,<=
小于等于。这些都是比较两个东西的关系,结果要么是 True
(真),要么是 False
(假)。条件语句就认这个 True
或 False
。
更进一步,你还能用逻辑运算符把好几个小条件“串”起来:and
(并且,所有条件都得真,整个大条件才是真),or
(或者,只要有一个小条件是真的,整个大条件就是真),not
(非,把真的变假,假的变真)。
比如,你想判断一个人是不是青年人(假设年龄在18到45岁之间,包含18和45):
“`python
age = 30
if age >= 18 and age <= 45:
print(“你是青年人!”)
“`
这里,age >= 18
和 age <= 45
两个条件都必须是真的(30确实大于等于18,也小于等于45),整个 and
连接的大条件才算真。
再比如,判断今天是不是周末:
“`python
day_of_week = “星期六” # 假设变量存储了今天是星期几
if day_of_week == “星期六” or day_of_week == “星期日”:
print(“今天是周末,可以放松啦!”)
“`
只要是星期六 或者 星期日,这个条件就成立。
not
呢,就像一个“非”字魔法棒,把真的变假,假的变真。比如你想判断一个数是不是非正数(也就是负数或零):
“`python
num = -10
if not (num > 0): # 如果“num大于0”不成立
print(“这个数字是非正数!”)
“`
这跟写 if num <= 0:
是等效的。not
用的时候要小心,有时候容易把逻辑绕晕了。
Python里头,条件判断还有个挺有意思的特性,叫“真值性”(Truthiness)。啥意思?就是说,不光是布尔值 True
或 False
能直接放进 if
后面,很多其他类型的数据也能被当成布尔值来判断。比如数字 0
、空的字符串 ''
、空的列表 []
、空的字典 {}
、空的元组 ()
,还有特殊的 None
,这些在 if
条件里都会被当作 False
。而任何非零数字、非空字符串、非空列表等等,都会被当作 True
。
所以,你可以直接写 if my_list:
来判断列表是不是空的,比写 if len(my_list) > 0:
要更“Pythonic”(更符合Python的风格习惯),代码看起来更简洁。
“`python
my_list = [1, 2, 3]
if my_list: # 列表非空,为 True
print(“列表不是空的!里面有东西!”)
empty_list = []
if empty_list: # 列表为空,为 False
print(“列表不是空的!里面有东西!”) # 这行不会被执行
else:
print(“列表是空的,啥也没有。”) # 这行会被执行
“`
这个特性挺方便的,但新手刚接触时可能会有点懵,不知道为啥一个列表或者一个字符串直接放进去就行了。理解了它背后的逻辑(空的、零、None是False,非空的、非零是True),写代码会更顺溜,也更容易读懂别人的Python代码。
有时候,你会遇到更复杂的决策场景,需要在已经满足某个条件的基础上,再进行判断。这就涉及到 if
语句的嵌套了。简单说,就是在 if
或 elif
或 else
下面的代码块里,再写一个 if
语句。
“`python
is_raining = True
is_cold = True
if is_raining:
print(“外面在下雨。”)
if is_cold: # 在下雨的前提下,再判断是不是冷
print(“而且还挺冷的,得多穿点。”)
else:
print(“不下雨但不冷,带件薄外套就行。”) # 这句话有点奇怪,应该放在外面else里
else: # 如果不打雨
print(“外面没下雨。”)
if is_cold: # 在不下雨的前提下,判断是不是冷
print(“虽然不下雨,但是有点冷。”)
else:
print(“天气正好,出去玩吧!”)
“`
看到没,缩进又加深了一层。每一层缩进都代表进入了一个更具体的判断分支。嵌套的 if
就像是在走迷宫,一个路口做一次选择,选对了进去,里面可能还有新的路口让你选。嵌套太多层有时候会降低代码的可读性,如果逻辑实在太复杂,可能需要考虑用函数或者更高级的结构来简化。
除了咱们上面说的这种规规矩矩的 if-elif-else
代码块,Python里还有种更紧凑的写法,叫条件表达式(Conditional Expressions),或者有人叫它三元运算符。格式是 结果1 if 条件 else 结果2
。它不是用来执行一堆动作,而是根据条件,从两个值里面选一个。
比如,你想根据分数决定评级是“Pass”还是“Fail”:
python
score = 75
result = 'Pass' if score >= 60 else 'Fail'
print(f"你的评级是: {result}") # 输出:你的评级是: Pass
这一行就搞定了!是不是挺简洁?不过,它只能用于比较简单的二选一赋值或者返回值的情况,复杂的逻辑,比如要执行好几行代码,或者有多个 elif
的情况,还是老老实实写 if-elif-else
代码块比较清晰易读。别为了炫技把一行代码写得像天书一样,代码是写给人看的,顺带给机器执行嘛。
最后,咱们再强调几个写 if
语句时常犯的错误:
1. 忘了冒号 :
。Python会给你 SyntaxError
。
2. 缩进错误。要么是没缩进,要么是缩进的空格/Tab数量不对或者混用了。Python会给你 IndentationError
或 SyntaxError
。
3. 把等于 ==
写成赋值号 =
. 这是一个经典的坑!Python可能会给你 SyntaxError
或 NameError
,有时候甚至不报错但结果不对(比如你在条件里意外地给变量赋了值)。
4. elif
或 else
没有和对应的 if
对齐。它们必须在同一个缩进级别上。
5. 条件写得太复杂或有逻辑错误,特别是使用 and
、or
、not
组合多个条件时,需要仔细思考各种情况。括号可以帮助你明确逻辑的优先级,比如 if (A and B) or C:
和 if A and (B or C):
是不一样的。
if
语句,看着简单,但它是构建复杂程序逻辑的基石。程序里的各种“智能”、“交互”,很多时候都得靠它来做决策。理解透彻 python if语句怎么写 以及它背后的逻辑,就像掌握了一把钥匙,能打开编程世界里很多扇门。从简单的条件判断到构建复杂的决策树,一切都从这个小小的 if
开始。所以,多练多写,去试试各种条件组合,感受程序在你手里“活”起来的过程吧!这其中的乐趣,自己体会了才知道。别怕犯错,错误是最好的老师,当年那些让我抓狂的缩进和等号,现在想起来,都是编程路上绕不过去的风景线。
评论(0)