Python分支和循环结构
1 分支结构
1.1 单分支
'''
语句:
条件判断语句
for循环语句
跳转语句
条件语句
if 条件:
条件成立执行的语句
'''
1 username='' 2 #Python:判断的变量是‘’ 0 None 默认false 3 #python:如果变量有值,认为是true 4 if username=='': 5 print("用户名为空,登录失败")
1 age=19 2 name='张三' 3 if age>18 and name: 4 print("%s今年%d岁了"%(name,age))
if判断的第二种使用方式:
if 逻辑表达式:
条件成立执行的语句
else:
条件不成立执行的语句
'''
1 print('*'*10,'欢迎来到消消乐','*'*10) 2 level=input('请输入你的级别(1,2):') 3 if level=='1': 4 print('免费玩,随便玩') 5 else: 6 print('已经进入付费级别,充值继续玩') 7 money=int(input('请充值(必须是100的倍数):')) 8 if money%100==0 and money>0: 9 print('充值金额是:',money) 10 else: 11 print('充值失败')
1 #随机数 2 import random 3 4 print(random.randint(0,10)) 5 6 ran=random.randint(1,10) 7 num=int(input('请输入1-10之间的数字:')) 8 if ran==num: 9 print('猜对了,恭喜中大奖') 10 else: 11 print("猜错啦,拜拜下次再来")
1.2 多重分支
if 判断条件1:
执行语句1
elif 判断条件2:
执行语句2
elif 判断条件3:
执行语句3
1 score=int(input("输入分数:")) 2 if score>=90 and score<=100: 3 print('你的成绩:优+') 4 elif score>=80 and score<90: 5 print('你的成绩:优-') 6 elif score>=70 and score<80: 7 print('你的成绩:良') 8 elif score>=60 and score<70: 9 print('你的成绩:及格') 10 else: 11 print("你的成绩不及格")
1.3 嵌套分支
if 判断条件1:
if 判断条件2:
执行语句2:
else:
执行语句3
else:
执行语句4
1.4 match..case
level=input("请输入你的心悦会员等级:") match level: case "心悦1": print("奖励稀有天空装扮一套") case "心悦2": print("奖励稀有克隆装扮一套") case "心悦3": print("奖励神器装扮一套") case "心悦4": print("奖励神器克隆装扮一套") case "心悦5": print("奖励+13装备增幅券三张")
2循环结构
2.1 for-in 循环
根据容器数据,决定循环多少次
'''
for i in a:
语句
a是容器
i是从容器中,拿出来的数据内容
range(8) range(0,8) 包含0 不包含8 0,1,2,3,4,5,6,7
range函数
range(101):可以产生一个0-100的整数序列
range(1,100): 可以产生一个1-99的整数序列
range(1,100,2): 可以产生一个1-99的奇数序列,其中的2是步长
'''
1 for i in range(3): 2 print('hello')
1 for i in range(5): 2 print('吃%d个馒头'%(i+1)) 3 print("终于吃饱了!!!")
1 for i in range(1,6): 2 print('吃了%d个馒头'%i)
1 for i in range(3,10): 2 print("打印第{}次".format(i+1))
1 for i in range(10,50,6): 2 print("我是第{}次".format(i+1))
使用列表源
1 fruits = ['banana', 'apple', 'mango'] 2 for index in range(len(fruits)): 3 print('当前水果 : %s' % fruits[index]) 4 5 print("Good bye!")
2.2 for ...else
'''
for...else
else:适用于for执行完或者没有循环数据时,需要做的事情
for i in 范围:
有数据执行的语句
else:
没有数据执行的语句
pass 空语句
只要有缩进而缩进的内容还不确定的时候,此时为了保证语法的正确性,就可以使用pass站位
'''
1 num=int(input("请输入需要的馒头数量:")) 2 for i in range(num): 3 print("正在吃%d个馒头"%(i+1)) 4 else: 5 print("没馒头吃,饿了")
1 if 10>8: 2 print("10是大数") 3 else: 4 pass 5 print('....判断结束....')
1 for i in range(3): 2 username=input('请输入用户名:') 3 password=input("请输入密码:") 4 if username=='admin' and password=='123456': 5 print('欢迎!用户:{}'.format(username)) 6 print('-----欢迎{},轻松购物-----'.format(username)) 7 break 8 else: 9 print('用户名或密码错误!') 10 else: 11 print('账户被锁定,需要重新激活!')
2.2 while 循环
根据布尔值真假决定是否循环
1 count=0: 2 3 while count<5: 4 5 count=count+1 6 print (count,”小于5”) 7 8 else: 9 print(count,”大于或等于5”)
1 i=1 2 while i<=30: 3 if i%3==0: 4 print(i) 5 i+=1
2.3 综合练习
1 ''' 2 分析 3 #代替空格 这里以打印5行来举例 4 n=5 i<=n j<=n-i j+=1 k<=2*i-1 5 i=1 第一行打印4个空格1个* 6 j=1 1<=5(t) 1<=5-1(t) ####* 7 j=2 1<=5(t) 2<=5-1(t) ###*** 8 j=3 1<=5(t) 3<=5-1(t) ##***** 9 j=4 1<=5(t) 4<=5-1(t) #******* 10 j=5 1<=5(t) 5<=5-1(f) ********* 11 k=1 1<=2*1-1(t) 12 k=2 2<=2*1-1(f) 13 14 i=2 第二行打印3个空格3个* 15 k=1 16 j=1 2<=5(t) 1<=5-2(t) 17 j=2 2<=5(t) 2<=5-2(t) 18 j=3 2<=5(t) 3<=5-2(t) 19 j=4 2<=5(t) 4<=5-2(f) 20 k=1 1<=2*2-1(t) 21 k=2 2<=2*2-1(t) 22 k=3 3<=2*2-1(t) 23 k=4 4<=2*2-1(f) 24 25 i=3 第三行打印2个空格5个* 26 k=1 27 j=1 3<=5(t) 1<=5-3(t) 28 j=2 3<=5(t) 2<=5-3(t) 29 j=3 3<=5(t) 3<=5-3(f) 30 k=1 1<=2*3-1(t) 31 k=2 2<=2*3-1(t) 32 k=3 3<=2*3-1(t) 33 k=4 4<=2*3-1(t) 34 k=5 5<=2*3-1(t) 35 k=6 6<=2*3-1(f) 36 37 i=4 第四行打印1个空格7个* 38 k=1 39 j=1 4<=5(t) 1<=5-4(t) 40 j=2 4<=5(t) 2<=5-4(f) 41 k=1 1<=2*4-1(t) 42 k=2 2<=2*4-1(t) 43 k=3 3<=2*4-1(t) 44 k=4 4<=2*4-1(t) 45 k=5 5<=2*4-1(t) 46 k=6 6<=2*4-1(t) 47 k=7 7<=2*4-1(t) 48 k=8 8<=2*4-1(f) 49 50 i=5 第五行打印0个空格9个* 51 j=1 5<=5(t) 1<=5-5(f) 52 k=1 1<=2*5-1(t) 53 k=2 2<=2*5-1(t) 54 k=3 3<=2*5-1(t) 55 k=4 4<=2*5-1(t) 56 k=5 5<=2*5-1(t) 57 k=6 6<=2*5-1(t) 58 k=7 7<=2*5-1(t) 59 k=8 8<=2*5-1(t) 60 k=9 9<=2*5-1(t) 61 k=10 10<=2*5-1(f) 62 63 i=6 64 k=1 65 j=1 6<=5(f) 66 67 ''' 68 #打印等腰三角形 69 c = True 70 while c: 71 n=input("请输入要打印的等腰三角形的行数:") 72 if n.isdigit()!=True:#判断是否是数字,不是则输出非法字符 73 print("非法字符") 74 continue; 75 else:#是则打印等腰三角形 76 n=int(n) 77 i=j=k=1 78 while i <= n: #控制行数 79 while j <= n - i:#控制空格数 80 print(' ', end='') 81 j += 1 82 while k <= 2 * i - 1:#控制*数 83 print('*', end='') 84 k += 1 85 print() #换行 86 i += 1 87 k = j = 1 88 c=False;
1 #打印菱形 2 c=True 3 while c: 4 n =input("请输入要打印的菱形的行数:") 5 if n.isdigit() != True:#判断是否是数字,不是则输出非法字符 6 print("非法字符") 7 continue 8 else:#是数字则打印菱形 9 n = int(n) 10 i=j=k=1 11 while i<=n: 12 while j<=n-i: 13 print(' ',end='') 14 j+=1 15 while k<=2*i-1: 16 print('*',end='') 17 k+=1 18 print() 19 i+=1 20 k=j=1 21 22 i = j = 1 23 k =2 * n - 3 24 while i<=n-1: 25 while j<=i: 26 print(' ',end='') 27 j+=1 28 while k>=2*i-1: 29 print('*',end='') 30 k=k-1 31 print("") 32 i += 1 33 k = 2 * n - 3 34 j=1 35 c=False
1 ''' 2 1、欢迎进入游戏世界小游戏 3 2、输入用户名,默认没有币 4 3、提示用户充值买币(100元30个币,充值必须是100的倍数,充值不成功可以再次充值) 5 4、玩一局扣除30个币,猜大小(系统用随机数模拟骰子产生值) 6 5、猜对了奖励三个游戏币,可以继续玩(不想继续玩,可以退出游戏) 7 6、金币不足30个提示用户充值 8 9 ''' 10 11 print('*'*30) 12 print('欢迎进入游戏世界') 13 print('*'*30) 14 username=input('请输入游戏用户名:') 15 money=0 16 while True: 17 answer=input('确定进入游戏吗(y/n)?') 18 if answer=='y'or answer=='Y': 19 #判断游戏币是否充足,反复充值 20 while True: 21 if money < 30: 22 answer = input('游戏币不充足,是否充值后继续游戏(y/n)') 23 if answer == 'y' or answer == 'Y': 24 print('继续游戏') 25 elif answer == 'n' or answer == 'N': 26 break 27 else: 28 print("输入错误,重新选择") 29 continue 30 31 while True: 32 n = input('金币不足,请充值(100元30个币,充值必须是100的倍数)') 33 if n.isdigit() != True: 34 print("提示:输入的不是数字") 35 continue 36 else: 37 n=int(n) 38 # 充值金额的判断 39 if(n % 100 == 0 and n > 0): 40 money = (n // 100) * 30 41 break 42 else : 43 print("提示:充值金额输入错误,必须是100的倍数") 44 continue 45 print('当前剩余游戏币:{},玩一局游戏扣除30个游戏币'.format(money)) 46 else: 47 print('进入游戏......') 48 t1=random.randint(1,6) 49 t2=random.randint(1,6) 50 money -= 30 #扣除游戏币 51 #两个骰子的值大于6--->大,否则就是小 52 print('系统洗牌完毕,请猜大小:') 53 guess=input('输入大或者输入小:') 54 #判断: 55 if((t1+t2)>6 and guess=='大') or ((t1+t2)<=6 and guess=='小'): 56 print('恭喜{}!本局游戏获得奖励3个游戏币!'.format(username)) 57 money+=3 58 else: 59 print('很遗憾!本局游戏输啦') 60 print("剩余游戏币:%s"%money) 61 while True: 62 answer=input('是否继续再来一局游戏,要扣除30枚游戏币?(y/n)') 63 if answer=='y'or answer=='Y' : 64 print('继续游戏') 65 break 66 elif answer=='n'or answer=='N': 67 break 68 69 else: 70 print("输入错误,重新选择") 71 continue 72 if answer == 'n' or answer == 'N': 73 break 74 if answer == 'n' or answer == 'N': 75 print("退出游戏") 76 break 77 elif answer=='n'or answer=='N': 78 print("退出游戏") 79 break 80 else: 81 print("输入错误,重新选择")
3 break和continue
中止:break语句可以跳出for和while的循环体。如果你从for或while循环中终止,任何对应的循环else块将不执行
break只能中止当前的循环
break
continue:快进,只能控制当前的循环
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环
3.2 综合练习:猜数字