分类:1.顺序结构 2.分支结构/选择结构 3.循环结构
1.顺序结构
顺序结构是系统默认程序结构,自上而下执行
结构代码
2.分支结构/选择结构
a.单项分支
if 条件表达式:
一条python代码
一条python代码
一条python代码
...
b.双项分支
if 条件表达式:
一条python代码
一条python代码
一条python代码
...
else:
一条python代码
一条python代码
一条python代码
...
c.多项分支
if 条件表达式:
一条python代码
一条python代码
一条python代码
...
elif 条件表达式:
一条python代码
一条python代码
一条python代码
...
elif 条件表达式:
一条python代码
一条python代码
一条python代码
...
...
else:
一条python代码
一条python代码
一条python代码
...
c.巢装分支
例子:
if 条件表达式:
代码语句
if 条件表达式:
代码语句
else:
代码语句
else:
代码语句
3.循环结构
a.while型循环
基本结构:
while 条件表达式:
代码内容
代码内容
代码内容
...
带有变化条件的循环
1.声明变量var
2.while 进行变量var的判断:
代码内容
代码内容
代码内容
...
3.变量var的改变操作
b.for..in循环(主要用于遍历容器类数据)
for 自定义变量 in 容器数据:
代码内容,可以使用自定义变量
代码内容,可以使用自定义变量
代码内容,可以使用自定义变量
### else语句的应用
循环中可以使用else语句
while 条件表达式:
循环语句
循环语句
循环语句
...
else:
代码语句
代码语句
代码语句
...
其他的流程控制语句
1.break语句
2.continue语句
3.pass语句
### 特殊语句:
1.exit()
2.quit()
用于结束程序的执行,exit()和quit()之后的代码不会执行。在单纯的循环结构中的作用与break很像,但绝不能混为一谈!!!
练习题一(让用户输入一个四位数的年份,来计算当前这个年份所对应的生肖年)
#十二生肖
#让用户输入一个四位数的年份,来计算当前这个年份所对应的生肖年
# 获取用户输入的年份
year = int(input('请输入四位数的年份:'))
# print(year%12)
if year % 12 == 0:
print(f'{year}年是 ==> 申猴')
elif year % 12 == 1:
print(f'{year}年是 ==> 酉鸡')
elif year % 12 == 2:
print(f'{year}年是 ==> 戌狗')
elif year % 12 == 3:
print(f'{year}年是 ==> 亥猪')
elif year % 12 == 4:
print(f'{year}年是 ==> 子鼠')
elif year % 12 == 5:
print(f'{year}年是 ==> 丑牛')
elif year % 12 == 6:
print(f'{year}年是 ==> 寅虎')
elif year % 12 == 7:
print(f'{year}年是 ==> 卯兔')
elif year % 12 == 8:
print(f'{year}年是 ==> 辰龙')
elif year % 12 == 9:
print(f'{year}年是 ==> 巳蛇')
elif year % 12 == 10:
print(f'{year}年是 ==> 午马')
elif year % 12 == 11:
print(f'{year}年是 ==> 未羊')
else:
print('计算错误,年份不对')
优化上述流程:
# 获取用户输入的年份
year = int(input('请输入四位数的年份:'))
n= year % 12 #取余
# 定义十二生肖 列表
varlist = ['申猴' ,'酉鸡' ,'戌狗' ,'亥猪' ,'子鼠' ,'丑牛' ,'寅虎' ,'卯兔' ,'辰龙' ,'巳蛇' ,'午马' '未羊']
print(varlist[n])
练习题二(循环输出十行十列 🌟隔行换色,隔列换色)
'''
循环输出十行十列 🌟
隔行换色,隔列换色
'''
# 隔列换色
num = 1
while num<=100:
# 判断当前数是奇数还是偶数
if num % 2 == 1:
print('☆',end = ' ')
if num % 2==0:
print('★',end = ' ')
# 判断是否需要换行
if num % 10 ==0:
print()
num += 1
# 隔行换色
num = 0
while num<100:
if (num//10) % 2 ==0:
print('★',end = ' ')
else:
print('☆',end = ' ')
if num % 10 == 9:
print()
num += 1
输出结果:
练习题三(99乘法表)
# 第一层循环控制 9行
for x in range(1,10):
# 第二层循环,内循环
# 内循环负责当前行的列数 第一行 1列 2行 2列 。。。 9行 9列
for y in range(1,x+1):
print(f'{x}x{y}={x*y}',end=" ")
# 控制换行
print()
输出结果:
#反向输出九九乘法表
for i in range(9,0,-1):
for j in range(1,i+1):
print(f'{i}x{j}={i*j} ',end = '')
print()
输出结果:
用while输出九九乘法表和反向九九乘法表:
num = 1
j = 1
while num <10 :
for j in range(1,num+1):
print(f'{num}x{j}={num*j} ',end=' ')
j +=1
num +=1
print()
输出结果:
#反向九九乘法表
num = 9
j = 0
while num >0 :
for j in range(num,0,-1):
print(f'{num}x{j}={num*j} ',end=' ')
j +=1
num -=1
print()
输出结果:
练习题四(斐波那契数列)
'''
0,1,1,2,3,5,8,13。。。
第0项如果是 0,那么第一项是 1,第二项也为 1,之后的第三项开始,每一项都是前面两个数的和
'''
# 获取用户输入的数据
num = int(input('你需要计算几项?'))
n1 = 0
n2 = 1
count = 2
# 从之后的数字开始计算
if num <= 0:
print('请输入一个正整数。')
elif num == 1:
print(f'斐波那契数列:{n1}')
else:
print(f'斐波那契数列:{n1},{n2}',end=",")
while count < num:
# 计算当前数
n3 = n1+n2
print(n3,end=",")
# 更新第一位和第二位数
n1,n2 = n2,n3
count += 1
输出结果:
练习题五(百钱买百鸡)
# 一共有100块钱,需要买100只鸡
# 公鸡 == 3元 ==> 33只
# 母鸡 == 1元 ==> 100只
# 小鸡 == 0.5元 ==> 200只
# 问:100块钱买100只鸡,一共有多少种方案
num = 0
count = 0
for cock in range(0,34):
for hen in range(0,101):
for chick in range(0,201):
count += 1
if (cock + hen + chick )==100 and (cock*3 + hen + chick*0.5)==100:
print(f'公鸡{cock}只,母鸡{hen}只,小鸡{chick}只,{cock*3 + hen + chick*0.5}')
num += 1
print(num)
print(count)
输出结果:
迭代次数达到69万,可以选择优化一下算法,如下:
num = 0
count = 0
for cock in range(0,34):
for hen in range(0,101):
chick = 100 - cock - hen
count += 1
if (cock + hen + chick )==100 and (cock*3 + hen + chick*0.5)==100:
print(f'公鸡{cock}只,母鸡{hen}只,小鸡{chick}只,{cock*3 + hen + chick*0.5}')
num += 1
print(num)
print(count)
输出结果:
可以看到运行次数仅为3434,大大减少了迭代次数