python3控制流程
1 条件语句
通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
1.1 if语句
1.1.1 只使用if
- 语法:
if 条件:执行代码
- 示例:
str=input("请输入True/False:")
bool_value=str.capitalize()
if bool_value:print(f'bool_value is {bool_value}')print('执行以下程序')
1.1.2 if…else
- 语法:
if 条件:执行代码1
else:执行代码2
- 示例:
str=input("请输入一个数字:")
num=int(str)
if num%2==0:print(f'数字 {num} 是一个偶数')
else:print(f'数字 {num} 不是一个偶数')
1.1.3 if…elif…else
- 语法:
# elif可以有n个
if 条件1:执行代码1
elif 条件2:执行代码2
else:执行代码3
- 示例:
# and表示与 or表示或
str=input("请输入一个数字:")
num=int(str)
if num > 100 or num < 0:print('成绩错误')
elif num >= 90 and num <=100 :print('成绩优秀')
elif num >= 70 and num < 90:print('成绩良好')
elif num >=60 and num < 70:print('成绩及格')
else:print('成绩不及格')
1.1.4 if嵌套
- 判断可以嵌套使用,但最好不要超过三层
str=input("请输入一个数字:")
num=int(str)
if num%2==0:if num%3==0:print(f'{num}可以被2整除,也可以被3整除')else:print(f'{num}可以被2整除,但不能被3整除')
else:if num%3==0:print(f'{num}不能被2整除,但可以被3整除')else:print(f'{num}不能被2整除,也不能被3整除')
1.2 match…case语句
- Python 3.10 增加了match…case的条件判断,被称为“模式匹配”或“结构化匹配”,类似于其他语言中的switch结构。
- match 后的对象会依次与case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,
_
可以匹配一切。 - 语法:
match subject:case <pattern_1>:<action_1>case <pattern_2>:<action_2>case <pattern_3>:<action_3>case _:<action_wildcard>
- case _: 类似于 C 和 Java 中的default:,当其他case都无法匹配时,匹配这条,保证永远会匹配成功。
1.2.1 基本模式匹配
x=int(input('请输入一个1~3的数字:'))
match x:case 1:print(f'x is {x}')case 2:print(f'x is {x}')case 3:print(f'x is {x}')case _:print(f'{x} not true')
1.2.2 序列模式匹配
a=int(input('请输入第一个数字:'))
b=int(input('请输入第二个数字:'))
c=(a,b)
match c:case (1,2):print(f'{c}\t两个参数都匹配正确')case (x,2):print(f'{c}\t只匹配第二个参数,匹配正确')case (1,y):print(f'{c}\t只匹配第一个参数,匹配正确')case _:print('匹配失败')
1.2.3 OR模式
- 使用 | 来表示一个或多个匹配项
year=int(input('请输入年份:'))
month=int(input('请输入月份:'))
match month:case 1 | 3 | 5 | 7 | 8 | 10 | 12:print(f'{year}年{month}月有31天')case 4 | 6 | 9 | 11:print(f'{year}年{month}月有30天')case 2:if (year%4==0 and year%100!=0) or (year%400==0):print(f'{year}年是闰年,{month}月有29天')else:print(f'{year}年不是闰年,{month}月有28天')case _:print(f'{month}不符合月份的输入要求')
1.2.4 守卫模式
- 使用 if 在模式匹配中添加额外的条件
num=int(input('请输入一个数字:'))
match num:case num if num > 0:print(f'{num}是一个正数')case _:print(f'{num}不是一个正数')
2 循环语句
循环是程序设计语言中反复执行某些代码的一种计算机处理过程,常见的有按照次数循环和按照条件循环
2.1 while循环
- 语法:
while 判断条件:执行语句1执行语句2......
- 示例:
i=0
sum=0
while i<10:print(i)i=i+1sum=sum+1
print(f'循环执行了{sum}次')
2.2 for循环
- for循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
- 语法:
for 变量 in 范围:执行语句
- 示例:
str='abcdefg'
for s in str:print(s,end=' ')
2.2.1 range语句
- range()是python中一个内置函数,用于生成一个整数序列。它可以用于循环中,以便按顺序访问一系列数字。
- 遵循左开右闭原则
- 用法1:
# range(stop)
# 生产从0开始到stop(不包括stop)的正数序列for i in range(11):print(i)
- 用法2:
# range(start,stop)
# 生产从start开始到stop(不包括stop)的正数序列for i in range(1,10):for j in range(1,i+1):print(f'{i}*{j}={i*j}',end='\t')print()
- 用法3:
# range(start,stop,step)
# 生产从start开始到stop(不包括stop)的正数序列,步长为stepfor i in range(-10,10,2):print(i)
# 倒序输出
for i in range(5,-1,-1):print(i)
2.2.2 break语句
- break语句可以跳出for和while的循环体。
- 示例:
for i in range(1,10):if i==4:breakprint(i)
print('循环结束!')
2.2.3 continue语句
- continue语句被用来跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
for i in range(1,10):if i==4:continueprint(i)
print('循环结束!')
2.2.4 sys.exit()
- sys.exit()用于结束整个程序
import sys
for i in range(1,10):for j in range(1,i+1):if i==4:sys.exit()print(f'{i}*{j}={i*j}',end='\t')print()