python
书接上回,这次我们讲流程控制语句
相信学过前端或java的同学都知道流程语句是什么吧,
程序的流程大体分为三类:顺序、分之、循环。
分支分为单分支和多分支
1.单分支:
if 判断条件:
条件【成立】时执行的代码1条件【成立】时执行的代码2
age=int( input('请输入年龄') )if age>18:print("你是成年人")
2.双分支
if 判断条件:
条件【成立】时执行的代码1条件【成立】时执行的代码2
else:
条件成【不成立】时执行的代码1条件成【不成立】时执行的代码2
age = int(input('请输入年龄'))if age > 18:print("你是成年人")else :print("你是未成年人")
3.多分支
if 判断条件1:
条件1【成立】时执行的代码
elif 判断条件2:
条件2【成立】时执行的代码
elif 判断条件3:
条件3【成立】时执行的代码
else: # else如不需要可以省略
上述所有条件都不成立时执行的代码
age = int(input('请输入年龄'))if age > 18:print("你是成年人")elif age>6 :print("你是未成年人")else:print("你是儿童")
- 一个if语句只能匹配1个else语句,但可以匹配多个elif语句,并且else语句要在所有的elif语句之后。
- 一旦某个分支语句检测为true,其他的elif以及else语句都将不再执行。
嵌套分支
if 判断条件1:# 条件1 成立时执行的代码1# 条件1 成立时执行的代码2# ......if 判断条件2:# 条件2 成立时执行的代码1# 条件2 成立时执行的代码2# ......elif 判断条件3:# 条件3 成立时执行的代码# ......else:# 条件2、条件3 都不成立时执行的代码1# 条件2、条件3 都不成立时执行的代码2# ......else:# 条件1 不成立时执行的代码1# 条件1 不成立时执行的代码2# ......if 判断条件4:# 条件4 成立时执行的代码# ......else:# 条件4 不成立时执行的代码# ......

循环:
循环是一种让代码“重复执行”的机制,当某个条件成立时,程序会反复执行一些语句,直到条件不再满足时,再停止运行
while循环:
while 循环条件: 条件成立时执行的操作1 条件成立时执行的操作2
1. 先判断循环条件是否成立(是否为 True)2. 如果成立 → 执行循环中的代码3. 执行完循环体 → 再次判断循环条件4. 若仍成立 → 继续执行循环中的代码5. 若不成立 → 循环结束
n=1while n<10:print(n) n+=1
# 模拟一个密室逃脱场景# 1用户必须正确的回答问题,才能“逃出密室”# 0# 2若回答错误,系统就会不断循环提问,直到答对为止。若回答正确,控制台打印逃脱成功,并结束循环。answer= (input("老婆,你要不要嫁给我?"))while answer!='嫁':print("回答错误") answer = (input("老婆,你要不要嫁给我?"))print("回答正确")

for循环:
for 临时变量 in 可迭代对象: 要执行的操作1 要执行的操作2

案例:文字加密解密
text=input("请输入要加密的文字")secret=""for t in text: secret+=chr(ord(t)+1)print(secret)text=input("请输入要解密的文字")secret=""for t in text: secret+=chr(ord(t)-1)print(secret)
对比while与for
1.while是条件驱动循环:适合处理不确定循环次数的场景,需要手动维护,不然会死循环
场景:输入密码
2.for是迭代驱动循环
场景:适合遍历数组,字符串
嵌套循环

案例:
# 第1天# 这是第1组仰卧起坐这是第2组仰卧起坐这是第3组仰卧起坐第1天任务已完成!明天继续!# 睡第2天这是第1组仰卧起坐这是第2组仰卧起坐这是第3组仰卧起坐第2天任务已完成!明天继续!# 睡第30天# 这是第1组仰卧起坐这是第2组仰卧起坐这是第3组仰卧起坐第30天任务已完成!明天继续!day = 0while day < 30: day += 1print('第', day, '天') n=0for n in range(1,4):print('第',n,'组的仰卧起坐任务已完成,明天继续!')print("为其30天的任务已完成")
九九乘法表:

left=1right=1for left in range(1,10):for right in range(1,left+1):print(f'{right}*{left}={left*right}',end='\t')print()
continue与break
continue和break都可用于循环语句中(while循环、for循环都可以)它们的作用分别是:
● continue:跳过本次循环剩余语句,直接进入下一次循环判断。
● break:立即终止循环,不再执行后续循环。
答题闯关挑战赛
一共3个关卡(每个关卡只有一道题),答对进入下一关,3关都通过则挑战成功!
答错可重试,每道题都有3次回答机会,若3次均答错,则挑战失败,游戏自动结束。
如果用户输入为空,则提示重新作答,且不浪费回答机会。
如果用户输入字母q,则直接退出游戏。****
for day in range(1,5):print(f'{day}的任务')print("吃饭")if day == 2:continueprint('睡觉')for day in range(1,5):print(f'{day}的任务')print("吃饭")if day == 2:breakprint('睡觉')for day in range(1, 5):print(f'********第{day}天********')print('吃饭')for item in range(1,3):print(f'面包{item}')if day == 4 and item == 2:breakprint(f'牛奶{item}')print('睡觉')
question_1 = "你爱我吗?"answer_1 = "我爱你"question_2 = "你要嫁给我吗?"answer_2 = "嫁"question_3 = "我们会一辈子不分离吗?"answer_3 = "会"n = 1while n < 4:if (n == 1): qustion = question_1if (n == 2): qustion = question_2if (n == 3): qustion = question_3 answer = input(f"第{n}关问题{qustion}请输入答案") m = 1while m < 4:if (n == 1 and answer == answer_1):print("回答正确")breakelif (n == 2 and answer == answer_2 and answer != ''):print("回答正确")breakelif (n == 3 and answer == answer_3 and answer != ''):print("回答正确")breakelif (answer == ''):print("请重新作答") m = 1 answer = input(f"第{n}关请输入答案")elif (answer == 'q'):breakelse:print("回答错误") m += 1if (m > 3):breakelse: answer = input(f"第{n}关第{m}次请输入答案")if (m > 3):print("3次都没输对,游戏结束")breakif (answer == 'q'):print("游戏结束")breakelif (answer == ''):print("请重新作答")else: n += 1
本章节内容到这里就结束了,其实案例有不同的解法,大家可以自行去写,只要结果是对的就行
接下来是一些练习,全部做会了就代表你通关了~
根据用户输入的数字,判断该数字是奇数还是偶数。
num = int(input("请输入数字"))if num % 2 == 0:print(f"{num}是偶数")else:print(f"{num}是奇数")
根据用户输入的数字,判断该数字是正数还是负数(不考虑0)
num = int(input("请输入数字"))if num > 0:print(f"{num}是正数")elif num<0:print(f"{num}是负数")
根据用户输入的考试分数,判断该分数是否及格了(大于等于60就是及格了)。
num = int(input("请输入分数"))if num >=60 :print(f"{num}及格")else :print(f"{num}不及格")
根据输入的考试成绩,判断成绩等级。
num = int(input("请输入分数"))if num >=85 :print(f"{num}优秀")elif num>=60 and num<=85:print(f"{num}及格")else:print(f"{num}不及格")
购物折扣计算:根据输入的购物车的商品总额,以及如下的折扣规则,计算实际应付的金额。
count=int(input("请输入商品总额"))if count>=500:print(f"金额{count*0.08}")elif count>=300 and count<500:print(f"金额{count*0.09}")elif count >= 100 and count < 300:print(f"金额{ count * 0.95}")else:print(f"金额{count}")
北京市居民年度用电电费计算:根据输入的用电度数,计算电费 北京市居民电费采用阶梯电价计价方式,所谓阶梯电价是指按照用户消费的电量分段定价,用电价格随用电量增加呈阶梯状逐级递增的一种电价定价机制。
- 第一档:2880度以下,电费单价0.4883元/度
- 第二档:2880-4800度,电费单价0.5383元/度
- 第三档:4800度以上,电费单价0.7883元/度
count=int(input("请输入用电额度"))if count<=2880:print(f"电费{count*0.4883}")elif count>2880 and count<=4800:print(f"金额{count*0.4883+(count-2880)*0.5383}")elif count > 4800 :print(f"金额{ (count-4800) * 0.7883+(4800-2880)*0.5383+2880*0.4384}")
请你编写一个游戏角色移动控制系统,根据玩家输入的不同指令,控制游戏角色执行相应的动作(输出控制台)。 具体规则:
str = input("请输入不同的指令")match str:case"w" | "W" | "上":print("角色向上移动")case"s" | "S" | "下":print("角色向下移动")case"a" | "A" | "左":print("角色向左移动")case"d" | "D" | "右":print("角色向右移动")case" " | "跳":print("角色跳跃")case"j" | "J" | "攻击":print("角色攻击")case"esc" | "ESC" | "退出":print("角色退出游戏")case _:print("非法操作, 不支持!!!")
循环练习: 需求1:根据输入的直角边的边长,打印等腰直角三角形 (如下为直角边为5的等腰直角三角形) *
n = 1for n in range(1, 6):for m in range(1,n+1):print("*", end='\t')print()
需求2:根据数字7,打印对应的数字金字塔 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7
n = 1for n in range(1, 8):for m in range(1,n+1):print(m, end='\t')print()
# 需求3:打印国际象棋棋盘# ■ □ ■ □ ■ □ ■ □# □ ■ □ ■ □ ■ □ ■# ■ □ ■ □ ■ □ ■ □# □ ■ □ ■ □ ■ □ ■# ■ □ ■ □ ■ □ ■ □# □ ■ □ ■ □ ■ □ ■# ■ □ ■ □ ■ □ ■ □# □ ■ □ ■ □ ■ □ ■n=1m=1for n in range(8):for m in range(8):if (m+n)%2 == 0:print("■",end=" ")else:print("□",end=" ")print()
需求:用户名密码登录,正确的用户名和密码为admin/666888 、zhangsan/123456、taoge/888666, 5次登录机会,输入错误五次,不允许再操作了。
for i in range(5): username = input("请输入用户名") password = input("请输入密码") flag = (username == 'admin' and password == '666888' or (username == 'zhangsan' and password == '123456') or ( username == 'taoge' and password == '888666'))print(flag)if (flag == True):print("登录成功")breakelif(flag == False):print("错误,重新输入")elif(flag == False and i > 5):print("不允许操作") i += 1
需求1:将1-1000之间(含1000)所有的5的倍数的数字累加起来。
i=0;for n in range(1,1001):if(n%5 == 0): i+=nprint(i)
需求2:统计字符串 "akiwksjakdiklowiqaamnvbamvaxnsjdsjkaaxkjd" 字符串中有多少个a和k。
totala=0totalk=0for i in"akiwksjakdiklowiqaamnvbamvaxnsjdsjkaaxkjd":if(i == 'a'): totala+=1if(i=='k'): totalk+=1print(totala)print(totalk)
只要上面的练习都自己做出来了,这节课就学会了,下期再见~接下来会更新四个商城项目,接入AI和支付,商城写到了订单,各位稍安勿躁,再等等需要了解服务器和域名的购买以及返佣政策的可以找我,我有朋友做这方面对这些比较了解。