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 综合练习:猜数字

 

posted @ 2022-03-10 17:46  万溪汇海  阅读(97)  评论(0编辑  收藏  举报