Python基础必掌握的条件语句详解

学Python数据科学,玩游戏、学日语、搞编程一条龙。

整套学习自学教程中应用的数据都是《三國志》、《真·三國無雙》系列游戏中的内容。

Python 中的条件语句根据特定布尔约束的计算结果为真或假,执行不同的计算或操作。条件语句由 Python 中的 IF 语句处理。

到目前为止演示的代码都是由顺序执行组成的。但是实际情况是通常程序需要跳过一些语句,重复执行一系列语句,或者在要执行的备用语句集之间进行选择。

这就需要应用到 控制结构,控制结构指导程序中语句的执行顺序(称为程序的控制流)。

在这里插入图片描述

if 语句

在这里插入图片描述

if <布尔计算的表达式>:
    <执行的python语句>

# 举例
x = 1
y = 2

if x < y:                            # 真
    print('yes')
yes

if y < x:                            # 假
    print('yes')


if x:                                # 假
    print('yes')

if y:                                # 真
	print('yes')
yes

if x or y:                           # 真
    print('yes')
yes

if x and y:                          # 假
	print('yes')


if '無雙' in '三國無雙':                # 真
	print('yes')
yes

if '郭嘉' in ['王異', '夏侯惇', '夏侯淵']:  # 假
	print('yes')

分组语句:缩进和块

评估条件为真的时候多条件选择情况。

过襄阳,诸葛亮说先主攻琮,荆州可有。先主曰:“吾不忍也。”——《三国志·蜀书·先主传》
如果曹操攻打荆州,刘备有几个选择:
1.取琮而代之
2.向南撤离
3.联合孙权阻击曹操
4.直接投降。

if <布尔计算的表达式>:
	<执行的python语句1>
	<执行的python语句2>
	<执行的python语句3>

Python 遵循一种称为越位规则的约定,遵守越位规则的语言通过缩进定义块。缩进是用来定义复合语句或块。

复合 if 语句如下所示。

if <布尔计算的表达式>:
    <执行的python语句1>
    <执行的python语句2>
    ...
    <执行的python语句3>
<后续的语句>

if '孫尚香' in ['太史慈', '大喬', '丁奉']:
    print('1')
    print('2')
    print('...')
    print('n')
print('0')

在这里插入图片描述

else 和 elif 子句

else 语句

通过 else 子句评估一个条件并在它为真时执行一条语句。

if <布尔计算的表达式>:
	<执行的python语句1>
else:
	<执行的python语句2>

x = 20
if x < 50:
    print('1111')
    print('2222')
else:
    print('2222')
    print('1111')
1111
2222


x = 120
if x < 50:
    print('1111')
    print('2222')
else:
    print('2222')
    print('1111')
2222
1111

elif 语句

elif 可以指定任意数量的子句,有且只能有一个为真。

name = '孫権'
if name == '孫尚香':
    print('{}!'.format(name))
elif name == '太史慈':
    print('{}!'.format(name))
elif name == '孫権':
    print('{}!'.format(name))
elif name == '大喬':
    print('{}!'.format(name))
else:
    print("谁啊?")
    
孫権!

还可以应用字典操作数据的方法更加简单。

names = {
    
    
    '孫権': '孫権!',
    '太史慈': '太史慈!',
    '大喬': '大喬!',
    '孫尚香': '孫尚香!'
}

print(names.get('孫権', "谁啊?"))
孫権!

print(names.get('小喬', "谁啊?"))
谁啊?

单行 if 语句

if 的简写形式。

if <布尔计算的表达式>:
	<执行的python语句>
# 等价于
if <布尔计算的表达式>: <执行的python语句>


if '三國無雙' in '真·三國無雙': print('真'); print('真'); print('真')
真
真
真

else 和 elif 也可以应用追加到单行的简写中。

x = 2
if x == 1: print('魏'); print('魏'); print('魏')
elif x == 2: print('蜀'); print('蜀')
else: print('晋'); print('晋')
蜀
蜀

三元运算符条件表达式

在这里插入图片描述

<执行的python语句1> if <布尔计算的表达式> else <执行的python语句2>

age = 27
s = '諸葛亮 未出山' if age < 21 else '諸葛亮 已出山'
s
'諸葛亮 已出山'

if else 标准语句。

if a > b:
    m = a
else:
    m = b

# 等价于
m = a if a > b else b

# <执行的python语句1> if <布尔计算的表达式> else <执行的python语句2>
x = y = 40
z = 1 + x if x > y else y + 2
z
42

# 如果<布尔计算的表达式>为真,<执行的python语句1>则返回并且<执行的python语句2>不执行。
z = (1 + x) if x > y else (y + 2)
z
42

# 如果<布尔计算的表达式>为假,<执行的python语句2>则返回并且<执行的python语句1>不执行。
x = y = 40
z = 1 + (x if x > y else y) + 2
z
43

pass语句

在不改变程序,pass用作占位符,是一个空的执行。

通常我们使用pass作为函数或条件子语句的占位符,表示具体的内容可以在未来进行填充。

if True:
    pass

print('呂布')

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/124475858