第五章---Python流程控制

🌞欢迎来到python的世界 
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2021年3月12日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

🍈 选择结构

🍉 循环结构

🍊break和continue语句

🥦打印九九乘法表

🍅顺序结构

     其实顺序执行,简单来说就是代码按照从上到下的顺序来执行。
举个栗子🌰
起床第一件事,先给自己打个气
print("起来第一件事:看手机")
print("起来第二件事:穿衣服")
print("起来第三件事:叠被子")
print("起来第四件事:洗漱")
print("起来第五件事:化妆")

举个栗子🌰(纪又铭)

如何谈恋爱?

print("第一,见面")
print("第二,吃饭")
print("第三,在一起")
print("第四,见家长")
print("第五,结婚")

举个栗子🌰(刘雅洁)

#顺序结构
print("暴富第一件事:买彩票")
print("暴富第二件事:中奖二十个亿")
print("暴富第三件事:去领奖,交税")
print("暴富第四件事:买下淮北工业与艺术学校")
print("暴富第五件事:当校长")

 

举个栗子🌰(赵梦洁)

#顺序结构
print("买彩票")
print("中奖8亿")
print("戴头套领奖")
print("买下五栋楼")
print("收租")
print("实现躺着赚钱")

你见过这个嘛?

if __name__ == '__main__':

      很多时候,我们经常在python程序中看到这么一行语句,这里简要解释一下: 首先, __name__ 是所有模块都会有的一个内置属性,一个模块的 __name__ 值取决于你如何调用模块。 假如你有一个 test.py 文件,如果在 a.py 文件中使用import导入这个模块 import test.py ,那么 test.py 模块的 __name__ 属性的值就是 test ,不带路径或者文件扩展名。

🍈 选择结构

       条件判断是通过一条或多条判断语句的执行结果(True或者False)来决定执行的代码块。
在Python语法中,使用if、elif和else三个关键字来进行条件判断。

单分支结构

举个栗子🌰
t="下雨"
if(t=="下雨"):
   print("明天不上课")

举个栗子🌰(纪又铭)
如果明天下冰雹,就不去逛街约会。
t="下冰雹"
if(t=="下冰雹"):
   print("明天不和女朋友去逛街")
举个栗子🌰(刘雅洁)
#单分支结构
c="中彩票"
if(c=="中彩票"):
   print("明天就退学")

举个栗子🌰(赵梦洁)

#单分支结构
Z="一夜暴富"
if(Z=="一夜暴富"):
   print("实现睁眼就有钱")
练习
a=int(input("请输入第一个数:"))
b=int(input("请输入第二个数:"))
print("输入值:{0},{1}",a,b)
if(a<b):
    a,b=b,a
print("降序值:{0},{1}",a,b)

#结果
请输入第一个数:1

请输入第二个数:2
输入值:{0},{1} 1 2
降序值:{0},{1} 2 1    
is_single = 1
# 单分支
if is_single == 1:
   print("good.")
else: # 否则
    print("bad")
print("hhhh")


结果:
good.
hhhh


# tab 会被替换成4个空格
# - 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进
# - 同一级别的代码,缩进必须一致
# - 官方建议缩进用4个空格,当然你也可以用2个,如果你想被人笑话的话。

双分支结构

举个栗子🌰

我与鹿晗谁美?假设我的颜值是99,鹿晗是的颜值是98。

s1=99
s2=98
if(s1<s2):
     print("我好看")
else:
     print("鹿晗好看")
     

举个栗子🌰(刘雅洁)

#双分支结构
a1=40
a2=3
if(a1>a2):
    print("a1比a2厉害")
else:
    print("a2比a1厉害")

多分支结构

举个栗子🌰

 

S=int(input("请输入分数:"))
if(S>=90): print("优秀")
elif (S>=70): print("良好")
elif (S>=60): print("及格")
else: print("差")

举个栗子🌰(刘雅洁)

#多分支结构
b=int(input("请输入你的颜值:"))
if(b>=95): print("古希腊掌管颜值的神")
elif (b>=85): print("大美女")
elif (b>=60): print("一般")
else: print("丑")

 🍉循环结构

for循环(知道循环次数)

举个栗子🌰

for i in range(5):
    print(f"开始播放摇篮曲第{i+1}遍")
    print("播放结束")
    print("  ")

举个栗子🌰

for i in range(3000):
    print(f"I Love You {i+1} times")


black_gf_age = 24

for i in range(3):
    guess = int(input("猜猜黑姑娘多大了>>:"))
    if guess > black_gf_age:
        print("猜的太大了,往小里试试...")
    elif guess < black_gf_age:
        print("猜的太小了,往大里试试...")
    else:
        exit("恭喜你,猜对了...")  # 退出程序

结果:
猜猜黑姑娘多大了>>:21
猜的太小了,往大里试试...
猜猜黑姑娘多大了>>:24
恭喜你,猜对了...
sum_odd=0
sum_even=0
for i in range(1,101):
    if i%2!=0:
        sum_odd+=i
    else:
        sum_even+=i
print(sum_odd)
print(sum_even)

结果:
2500
2550

while循环

举个栗子🌰

i=1
while(i<3001):
    print("I Love You {i} times")
    i=i+1
print(f"I Love You more than {i} times")

black_girl_age = 26

count = 0  # 计数器
while count < 3:
    count +=1
    guess = int(input("输入你的猜测:"))

    if guess > black_girl_age:  # 猜大了
        print("你讨厌,人家哪有这么老啊。。。。")
    elif guess < black_girl_age: # 猜小了
        print("真开心,但实际我比这个岁数要大呢...")
    else:
        print("恭喜你,猜对了,可以今天把我领回家了。。。。")
        break

结果:
输入你的猜测:25
真开心,但实际我比这个岁数要大呢...
输入你的猜测:26
恭喜你,猜对了,可以今天把我领回家了。。。。
sum_odd=0
sum_even=0
i=1
while(i<=100):
    if i%2!=0:
        sum_odd+=i
    else:
        sum_even+=i
    i+=1
print(sum_odd)
print(sum_even)

结果:
2500
2550
while的else从句:
while循环还可以增加一个else从句。当while循环正常执行完毕,会执行else语句。注意else与while平级的缩进 方式!
number = 10 
i = 0 
while i < number:
    print(i,end=' ') 
    i += 1 
else:
    print("执行完毕!")
结果:
0 1 2 3 4 5 6 7 8 9 执行完毕!

​​​​​​🍊break和continue语句

举个栗子🌰

for i in range(1,8):
    if(i==6):
      break
    print(f"周{i},要上课")

for i in range(1,11):
    if(i==6):
      continue
    if(i==7):
      continue
    print(f"周{i},要上课")

举个栗子🌰

宿管要来5栋查寝,要求遍历所有的房间,来寻找一只小猫

for floor in range(1, 7):
     print(f"欢迎来到第{floor}层")
     for room in range(1, 7):
         print(f"{floor}0{room}")
         
结果:
欢迎来到第1层
101
102
103
104
105
106
欢迎来到第2层
201
202
203
204
205
206
欢迎来到第3层
301
302
303
304
305
306
欢迎来到第4层
401
402
403
404
405
406
欢迎来到第5层
501
502
503
504
505
506
欢迎来到第6层
601
602
603
604
605
606

3层已经被查过了,要跳过

for floor in range(1, 7):
     if floor==3:
         continue
     print(f"欢迎来到第{floor}层")  #f的作用是格式化字符串
     for room in range(1, 7):
         print(f"{floor}0{room}")


结果:
欢迎来到第1层
101
102
103
104
105
106
欢迎来到第2层
201
202
203
204
205
206
欢迎来到第4层
401
402
403
404
405
406
欢迎来到第5层
501
502
503
504
505
506
欢迎来到第6层
601
602
603
604
605
606

后来在404房间发现了这只猫,宿管阿姨停下了脚步

for floor in range(1, 7):
     print(f"欢迎来到第{floor}层")
     for room in range(1, 7):
         print(f"{floor}0{room}")
         if(floor==4 and room==4):
             print("停下了脚步")
             break
                   
结果:
欢迎来到第1层
101
102
103
104
105
106
欢迎来到第2层
201
202
203
204
205
206
欢迎来到第3层
301
302
303
304
305
306
欢迎来到第4层
401
402
403
404
停下了脚步
欢迎来到第5层
501
502
503
504
505
506
欢迎来到第6层
601
602
603
604
605
606
for floor in range(1, 7):
     print(f"欢迎来到第{floor}层")
     for room in range(1, 7):
         print(f"{floor}0{room}")
         if(floor==4 and room==4):
             print("停下了脚步")
         break
结果
欢迎来到第1层
101
欢迎来到第2层
201
欢迎来到第3层
301
欢迎来到第4层
401
欢迎来到第5层
501
欢迎来到第6层
601

显然这样是不对的,即python中的break只能跳出当前层的循环,无法全部跳出。那如果有这么需求怎么办?

flag = True
for floor in range(1, 7):
     if flag != True:
         break
     print(f"欢迎来到第{floor}层")
     for room in range(1, 7):
         print(f"{floor}0{room}")
         if floor == 4 and room == 4:
             print("停下了脚步")
             flag = False
             break

结果:
欢迎来到第1层
101
102
103
104
105
106
欢迎来到第2层
201
202
203
204
205
206
欢迎来到第3层
301
302
303
304
305
306
欢迎来到第4层
401
402
403
404
停下了脚步

再举个栗子

sum=0
for i in range(1,101):
     sum=sum+i
     if i==2:
         print("执行continue")
         continue 
     if i==4:
         print("执行break")
         break
print("sum={0}".format(sum))
print("循环结束")


结果:
执行continue
执行break
sum=10
循环结束

🥦练习

1.打印九九乘法表

for i in range(1,10):
    s=" "
    for j in range(1,10):
         s+=str.format("{0:1}*{1:1}={2:<2} ",i,j,i*j)
    print(s)

1.{2:<2}

表示第三个字符占两格左对齐。

2.{0:1}*{1:1}={2:<2}之后是有空格的。

3.外循环for i in range(1,10):由三个语句构成(包括一个内循环)

注意:当i取不同值时一定要把三条语句执行完。

补充:输出九九乘法表的上三角和下三角的显示效果

#下三角
for i in range(1,10):
    s=''
    for j in range(1,i+1):
        s+=str.format("{0:1}*{1:1}={2:<2} ",i,j,i*j)
    print(s)
    
print('-------------------------------------------------------------------')
    
#上三角
for i in range(1,10):
    s=''
    for k in range(1,i):
        print(end="       ")
    for j in range(i,10):
        s+=str.format("{0:1}*{1:1}={2:<2} ",i,j,i*j)
    print(s)

注意:在上三角中

print(end="       ")

有7个空格=一个表达式(6个)+空格

2.京牌摇号⼩程序

需求:
1. 允许⽤户最多选 3
2. 每次放出 20 个⻋牌供⽤户选择
想实现这个程序 ,有 2 个问题要解决
1. 如果实现输出随机值
2. 随机值需限定在⼤写字⺟,和数字范围内,不能有其它特殊字符。
这就要⽤到⼀些超纲知识, random 模块和 string 模块。 Python 的模块库是个宝藏,想实现任何功能它
都有现成的模块供你调⽤
random 模块
可以产⽣指定范围内的随机数、字符串等
import random# 导⼊random模块
print(random.choice("abcdefghi"))# 参数也可以是⼀个列表
s = "abcdefghijklmn"
print(random.sample(s,3))# 从数据源s中随机取出3个值
print(random.randint(1,100)) # 打印⼀个随机数

结果:
g
['j', 'd', 'e']
5
string 模块
import string # 导⼊string模块
print(string.ascii_letters)
print(string.ascii_uppercase)
print(string.ascii_lowercase) # ⼩写字⺟
print(string.punctuation) # 打印特殊字符
print(string.digits) # 打印数字

结果:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
0123456789

字符串的拼接

print("-".join(["a","b","c"]))

结果:
a-b-c

import random
import string
count = 0
while count < 3:
    car_nums = []  # 存储供用户选择的号
    for i in range(20):
        n1 = random.choice(string.ascii_uppercase)  # 生成车牌的第一个字母
        n2 = "".join(random.sample(string.ascii_uppercase+string.digits, 5))
        c_num = f"京{n1}-{n2}"
        car_nums.append(c_num)  # 把生成的号码添加到列表
        print(i+1,c_num)
    choice = input("输入你喜欢的号:").strip()
    if choice in car_nums: # 代表选择是合法的
        print(f"恭喜你选择了新车牌号:{choice}")
        exit("Good luck.")
    else:
        print("不合法的选择....")

    count += 1


结果:
1 京Q-4AEV8
2 京T-DFQ6I
3 京U-XQ8R3
4 京J-KZ1T5
5 京C-Z8R9L
6 京V-LNTU0
7 京F-R9KNT
8 京P-YCESN
9 京W-O40U9
10 京W-7PNOM
11 京I-WP2X4
12 京Z-A80K3
13 京V-40SEK
14 京U-U5QJ6
15 京A-VCEB7
16 京V-V2HUB
17 京X-MVRKG
18 京Y-B6Y2P
19 京N-NGZ3F
20 京R-JH4FO
输入你喜欢的号:京Z-A80K3
恭喜你选择了新车牌号:京Z-A80K3
Good luck.
3.年会抽奖程序
张三科技有限公司有 300 员⼯,开年会抽奖,奖项如下:
⼀等奖 3 名, 泰国 5 ⽇游
⼆等奖 6 名, Iphone ⼿机
三等奖 30 名,避孕套⼀盒
规则:
1. 共抽 3 次,第⼀次抽 3 等奖,第 2 次抽 2 等奖,第 3 次压轴抽 1 等奖
2. 每个员⼯限中奖⼀次,不能重复
解题思路:
1. ⽣成⼀个员⼯列表,⽤ random 模块从⾥⾯取随机值
2. 取完值之后,⽴刻从员⼯⼤列表⾥把中奖⼈删掉,即可防⽌其再次中奖
import random
import string
import faker
import random
alex = faker.Faker(locale="zh_CN")
staff_list = []
for i in range(1, 301):
    staff_list.append(alex.name())
print(staff_list)
level = [30, 6, 3]
for i in range(3):
    winner_list = random.sample(staff_list, level[i])
    for wc in winner_list:
        staff_list.remove(wc)
    print(f"抽中{3 - i}等奖的人是", winner_list)




结果:
['卢磊', '冯丽丽', '吴岩', '李建军', '陈杰', '姚晨', '马桂芝', '李娜', '赵玉英', '齐慧', '王娟', '王娜', '王建平', '马艳', '李梅', '陈建华', '盛旭', '魏楠', '葛芳', '萧燕', '萧莉', '陈秀华', '罗凯', '蒋桂香', '毕宇', '丁倩', '江杰', '余林', '李红', '任建华', '雷宇', '黄玉', '杨彬', '张淑华', '周秀芳', '马荣', '劳璐', '周玉梅', '吕艳', '张英', '李娜', '夏金凤', '彭兵', '钱云', '牛成', '易冬梅', '蒋小红', '冯婷', '韦丽娟', '秦峰', '谭雪梅', '胡慧', '张健', '杨楠', '翟柳', '巫淑珍', '张利', '张荣', '刘欢', '唐龙', '杨阳', '霍建平', '吴彬', '黄龙', '李玉兰', '阎芳', '金红', '郑红梅', '梁桂芳', '宋建华', '张建平', '罗雷', '魏欣', '金桂芳', '李婷', '王磊', '骆荣', '朱丽娟', '杨玉珍', '余建华', '张桂荣', '王桂芝', '丁婷', '童鹏', '黄梅', '王慧', '徐静', '陶阳', '谭萍', '黄玉英', '李海燕', '李金凤', '孙建', '时艳', '李杰', '华丽华', '蔡颖', '朱红梅', '刘杰', '陈雪', '陈淑英', '郭想', '刘秀荣', '舒莉', '周娜', '王峰', '陈秀云', '万玉兰', '韩刚', '吴飞', '戚瑞', '车萍', '王健', '吴萍', '林淑华', '杨玉兰', '王璐', '洪红', '曾秀英', '姚瑞', '田欣', '葛彬', '李丽华', '张明', '邓波', '王桂花', '王秀华', '牛琴', '曾玲', '李建', '魏健', '王荣', '李淑珍', '孙桂荣', '黄慧', '欧阳宇', '姚伟', '周淑华', '马兰英', '宋淑华', '王艳', '罗娟', '潘桂珍', '杨帅', '伍淑华', '赵云', '郭秀荣', '李秀梅', '关建军', '李秀兰', '李兰英', '覃瑜', '章辉', '沈敏', '宋玲', '唐淑珍', '孙淑珍', '杨利', '张桂荣', '郝波', '张建平', '顾欢', '白萍', '陈秀珍', '赵桂芝', '齐春梅', '王想', '茅莹', '张璐', '吴玉兰', '汪阳', '熊晨', '张华', '聂霞', '龙金凤', '马桂荣', '王丽丽', '王梅', '石英', '樊丽华', '赖桂芝', '李鹏', '苏伟', '钟秀梅', '王丹丹', '赵想', '廖涛', '刘芳', '姚静', '余刚', '朱琴', '王丽华', '宋楠', '林艳', '蓝辉', '樊淑兰', '田雷', '任兵', '何辉', '林雪', '李玲', '贺慧', '钟建', '姚秀珍', '鞠建平', '叶玉梅', '胡桂珍', '夏辉', '傅淑兰', '凌强', '俞飞', '唐春梅', '徐建', '陈霞', '曹辉', '林阳', '邢杨', '阮波', '张丽', '金军', '邓雪', '吕桂英', '陈云', '刘玉梅', '黄亮', '王波', '陈秀芳', '阎冬梅', '桑红', '胡浩', '王兰英', '罗桂珍', '谭帆', '李波', '杨涛', '何欣', '李林', '蔡旭', '陈雷', '覃小红', '吴瑞', '张辉', '赖成', '谢燕', '王秀华', '王静', '宫旭', '冯春梅', '季东', '聂桂芳', '张婷婷', '管杨', '邱红梅', '杨桂英', '陈海燕', '苏楠', '巩建军', '谭艳', '周兵', '林丽', '李玉华', '窦璐', '李桂花', '徐金凤', '杜颖', '耿柳', '陈刚', '邓桂花', '孙玉兰', '陈冬梅', '刘亮', '孙宇', '杨琴', '李明', '马宇', '龙林', '孟柳', '蔡颖', '王宇', '林文', '刘颖', '汪龙', '李婷婷', '曾志强', '张欣', '姚洋', '李秀华', '杨凯', '蒋军', '聂娜', '宋伟', '周红霞', '刘杰', '易欣', '李玉华', '姜宇', '张倩', '朱鹏', '邓成', '蔡丽丽']
抽中3等奖的人是 ['杨桂英', '张辉', '马兰英', '蒋小红', '吴彬', '杨玉兰', '李秀华', '陈冬梅', '廖涛', '谭雪梅', '宋淑华', '赵桂芝', '李玉兰', '章辉', '周娜', '李梅', '茅莹', '龙林', '张璐', '聂霞', '牛成', '彭兵', '何欣', '王娜', '蔡丽丽', '王璐', '邓波', '管杨', '吕桂英', '关建军']
抽中2等奖的人是 ['刘亮', '杨琴', '张婷婷', '孙建', '刘杰', '李娜']
抽中1等奖的人是 ['张桂荣', '陈杰', '李丽华']

Faker 是一个生成伪造数据的 Python 库,Faka 数据通常用于测试或用一些伪数据填充数据库。 


异常处理

try:
   x = int(input("请输入一个整数: "))
   print('输入的数字是:{}'.format(x))
except ValueError:
   print("您输入的不是数字,请再次尝试输入!")
except TypeError:
   print("您输入的不是整数,请再次尝试输入!")
x=10
y=10
try:
   x/y
except:
  print("出现运算错误")
else:
  print("没有运算错误")
finally:
  print("计算结束!")
try:
   a = input("输入一个数:")
   if(not a.isdigit()):
      raise ValueError("a 必须是数字")
except ValueError as e:
   print("引发异常:",repr(e))

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卿云阁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值