Python——流程控制结构

本文围绕Python展开,介绍了条件表达式,包括算术、关系等运算符,指出多数Python合法表达式可作条件表达式。还详细讲解了选择语句,如单分支、双分支、多分支结构及嵌套使用,以及循环结构,涵盖for循环、while循环,还有break和continue语句的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


条件表达式

算术运算符:+、-、*、/、//、%、**
关系运算符:>、<、==、<=、>=、!=,可以连续使用,
如:>>>1 < 2 < 3【有的编译环境不同需要在前面加个print,变成:print(1 < 2 < 3) ,下面也是一样】
True
>>>1 < 2 > 3
False
>>>1 < 3 > 2
True
测试运算符:in、not in、is、 is not
逻辑运算符:and、or、not,注意短路求值
位运算符:~、&、l、^、<<、>>
矩阵乘法运算符:@

在选择和循环结构中,条件表达式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空 range对象或其他空迭代对象,Python解释器均认为与True等价。

从这个意义上来讲,几乎所有的Python合法表达式都可以作为条件表达式,包括含有函数调用的表达式

>>> if 3: 	#使用整数作为条件表达式
	print(5)
# 输出结果:5
>>> a = [1, 2, 3]
>>> if a: 	#使用列表作为条件表达式
	print(a)
# 输出结果:[1, 2, 3]
>>> a = []
>>> if a:
	print(a)
else:
	print('empty')
# 输出结果:empty
>>> i = s = 0
>>> while i <= 10: 	#使用关系表达式作为条件表达式
	s += i
	i += 1
>>> print(s)
# 输出结果:55
>>> i = s = 0
>>> while True: 	#使用常量True作为条件表达式
	s += i
	i += 1
	if i > 10:
		break
>>> print(s)
# 输出结果:55
>>> s = 0
>>> for i in range(0, 11, 1): 	#遍历迭代对象中的所有元素
	s += i
>>> print(s)
# 输出结果:55

关系运算符具有短路求值或惰性求值的特点,只计算必须计算的表达式的值。
以"and"为例,对于表达式"表达式1 and 表达式2"而言,如果"表达式1"的值为"False"或其他等价值时,不论"表达式2"的值是什么,整个表达式的值都是"False"
此时"表达式2"的值不影响整个表达式的值,因此将不会被计算,从而减少不必要的计算和判断

选择语句

单分支选择结构

if 表达式:
语句块

x = input('Input two number:')
a, b = map(int, x.split())
if a > b:
	a, b = b, a 	#序列解包,交换两个变量的值
print(a, b)

在这里插入图片描述

代码如下(示例):

a = 3
b = 5
if a>b:
	a, b = b, a
print(a,b)

# 输出结果:3  5

双分支结构

if 表达式:
	语句块1
else:
	语句块2

在这里插入图片描述

代码如下(示例):

>>> a = ['1', '2', '3', '4', '5']
>>> if a:
	print(a)
else:
	print('Empty')
	
# 输出结果:['1', '2', '3', '4', '5']
a = 3
b = 5
if a>b:
	print("the max no is",a)
else:
	print("the max no is",b)

# 输出结果:the max no is 5

多分支结构

关键字 elif 是else if 的缩写。

if 表达式1:
	语句块1
elif 表达式2:
	语句块2
elif 表达式3:
	语句块3
else:
	语句块4

利用多分支选择结构将成绩从百分制变换到等级制

score=int(input('input score:'))
if score > 100:
    print('wrong score.must <= 100.')
elif score >= 80:
    print('A')
elif score >= 60:
    print('B')
elif score >= 0:
    print('C')
else:
    print('wrong score.must >0')

选择结构的嵌套

注意:缩进必须要正确并且一致。

if 表达式1:
	语句块1
	if 表达式2:
		语句块2
	else:
		语句块3
else:
	if 表达式4:
		语句块4

在这里插入图片描述
使用嵌套的选择结构实现百分制成绩到等级制的转换

score=int(input('input score:'))
if score > 100 or score < 0:
    print('wrong score.must between 0 and 100.')
else:
    if score >= 80:
        print('A')
    elif score >= 60:
        print('B')
    elif score >= 0:
        print('C')


循环结构

for循环

for 取值 in 序列或迭代对象:

循环体
[else:
    else子句代码块]

for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素。
一般优先考虑使用for循环。
若循环因为条件表达式不成立而自然结束,则执行else结构中的子句;如果因为执行了break语句导致的提前结束,则不执行else子句。

#循环正常结束,执行else语句块
for i in [1,2,3,4]:
    print(i)
else:
    print('else')

#break跳出循环后else语句块不执行
for i in [1,2,3,4]:
    print(i)
    if i>2:
        break
else:
    print('else')

for 循环示例:
求1-2+3-4+5 … 99的所有数的和

sum=0
for i in range(0,100):
    if i%2==0:
        sum-=i
    else:
        sum+=i
print(sum)

while循环

while 条件表达式:

	循环体
[else:
	else子句代码块]

while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况。

若循环因为条件表达式不成立而自然结束,则执行else结构中的子句;如果因为执行了break语句导致的提前结束,则不执行else子句。

相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。

while循环示例:
用while循环来实现计算100以内所有奇数之和。

sum=0
n=99
while n>0:
    sum=sum+n
    n=n-2
print(sum)

break和continue语句

break语句在while循环和for循环中都可以使用,一般放在if选择结构中,一旦break语句被执行,将使得整个循环提前结束。
continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。
除非break语句让代码更简单或更清晰,否则不要轻易使用。

计算小于100的最大素数,注意break语句和else子句的用法

for n in range(100,1,-1):
    for i in range(2,n):
        if n%i == 0:
            break
    else:
        print(n)
        break

删除上面代码中最后一个break语句,则可以用来输出100以内的所有素数。

for n in range(100,1,-1):
    for i in range(2,n):
        if n%i == 0:
            break
    else:
        print(n)

警惕continue可能带来的问题:输出10以内的奇数

i=0
while i<10:
    if i%2 == 0:
        continue
    print(i,end=' ')
    i+=1
# 永不结束的死循环,Ctrl+C强行终止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哈喇子!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值