在 Excel 中,使用公式=IF(B2/C2 > 0.1, "超过目标", "未达到目标") 按条件计算当前单元格的内容,这类型的语法,在 Python 中称作控制语句。

If 语句

Untitled

对于=IF(B2/C2 > 0.1, "超过目标", "未达到目标"),转换成 Python 中的表达就是:

if B2/C2 > 0.1:
    result = "超过目标"
else:
    result = "未达到目标"

if语句中,其中else 语句为可选,还有多条件语句elif

Python 是采用缩进的语法模式,我们在编写完成if 语句之后,需要缩进编写此条件下运行的语句内容。当然,一般编辑器已经在我们回车后帮我们缩进完成了,我们无需手动使用Tab按键缩进。

if x < 0:
    print('x 小于 0')
elif x == 0:
    print('x 等于 0')
elif x == 1:
    print('x 等于 1')
else:
    print('More')

可能你已经想到,语句之间是可以无限嵌套的,就像是 Excel 的公式=IF(A2>1000000, "超级卖家", IF(A2>500000, "钻石卖家", "金牌卖家")) 一样。只要逻辑不被斩断,Python 解释器就会一直执行你的语句:

if A2 > 1000000:
    rating = "超级卖家"
else:
    if A2 > 500000:
        rating = "钻石卖家"
    else:
        rating = "金牌卖家"

当然,条件可以变得更复杂,比如与and 和或or

# a 大于 10 并且 b 小于 20,则将变量 result 设为 True,否则为 False
if a > 10 and b < 20:
    result = True
else:
    result = False

# c 大于 30 或 d 小于 40,则将变量 result 设为 True,否则为 False
if c > 30 or d < 40:
    result = True
else:
    result = False

if elif语句后面跟一个返回“是TrueFalse”的表达式,他可以是一个函数调用、一个变量等等。

import pandas as pd

df = pd.DataFrame() # 创建一个空的 DataFrame
if df.empty: # 一个空的 DataFrame
    print("DataFrame is empty.")

a = 0
if not a: # a 为 0,则 not a 返回 True
    print("print !!")

b = []
if not b: # 列表为空,则 not b 返回 True
    print("print !!")

<aside> 🤖 请使用 AI,编写 Prompt,让 AI 给出if 语句后面可以跟那些表达式,并给出例子。

</aside>

扩展

c > 30 or d < 40 取反是什么?这里涉及到布尔代数中的德摩根定律:

  1. 非(P 且 Q)等于(非 P 或 非 Q)
  2. 非(P 或 Q)等于(非 P 且 非 Q)