目录
1、程序流程控制
1.1、程序设计的基本结构
任何的算法(程序)都可以由顺序结构、选择结构、循环结构,这三种基本结构组成来实现,顺序结构是程序的基础
1.2、程序流程图
任何算法(程序)都可以使用一系列图片、流程线和文字说明算法中的基本操作和控制流程
基本元素:操作框、流程线、文字说明
2、顺序结构
3、选择语句(if...else...)
3.1、选择结构/分支结构
import math
a = int(input("请输入边长a:"))
b = int(input("请输入边长b:"))
c = int(input("请输入边长c:"))
if a > 0 and b >0 and c > 0:
print("边长大于0,输入合法")
if (a+b) > c and (a+c) > b and (b+c) > a:
print("两边之和大于第三边")
p = (a+b+c) / 2
s = math.sqrt(p*(p-a)*(p-b)*(p-c))
print(f"面积为:",{s})
else:
print("两边之和小于或等于第三边")
else:
print("边长小于0,输入不合法")
3.2、if...elif...else
age = int(input("please input your age:"))
if 100>age>=18:
print("可以上网")
elif 0<age<18:
print("不能上网")
else:
print("输入不合法")
3.3、if的三元运算
str1 = input("请输入:")
print("Hello在字符串中") if ("Hello" in str1) else print("Hello不在字符串中")
print("hello%s存在字符串中"%('' if "hello" in str1 else "不"))
3.4、if...else...小练习
# 用户登录验证
# 登录成功失败都给予提示
# 最多可尝试3次密码,密码或用户名错误,提示你还有几次尝试机会
for i in range(1,4):
username = input("请输入用户名")
password = input("请输入密码")
if username == 'root' and password == '123456':
print("登录成功")
break
elif i == 3:
print("你已经登录三次了,下次重试时间为24小时后")
break
else:
print("登录失败,你还有",3-i,'次机会')
continue
4、循环语句(for...)
4.1、循环语句(for)
for循环的功能是,对于iterable中的内一个元素 ,都"do something"
num = 0
for i in 'soekxie':
num += 1
if num == 2:
continue #退出本次循环
print(f"第{num}个字符为:{i}")
if num == 5:
break
print("end...")
4.2、练习——判断字符串大小写
# 让用户输入一个字符串
# 分别取出每个字符,如果为大写输出1,如果为小写输出0
# 如,用户输入”aBc”则输出”010”
# method1
str1 = input("请输入一个字符串")
str2 = ''
for i in str1:
if i.isupper():
str2 += '1'
elif i.islower():
str2 += '0'
else:
str2 += i
print(str2)
# method2
str1 = input("请输入一个字符串")
for i in str1:
if i.isupper():
print(1,end='') # 把end从默认的'\n',换成''
elif i.islower():
print(0,end='')
else:
print(i,end='')
4.3、练习——用户登录验证
# 输入用户名、密码
# 如果用户名为'root',密码为'123456',则登录成功,否则登录失败
username = input("请输入用户名")
password = input("请输入密码")
print("登录%s成功"%("" if username=="root" and password=="123456" else "不"))
4.4、练习——猜数字
#在程序内定义一个数字,让用户猜
#检查用户输入的是否为数字
#键盘接收用户输入,猜对或猜错都给出提示(大/小)
#最多能猜3次
#给出用户最终猜的结果,及花了几次来猜
custom = input("请输入0-50中,你想要给人猜的数字") #
for i in range(1,4):
num = input("请输入0——50内的数字")
if num.isdigit():
if int(num) > custom:
print("猜大了")
elif int(num) == custom:
print("猜对了,你花了",i,"次来猜")
break
else:
print("猜小了")
else:
print("这个不是只有数字,请重新运行")
break
else:
print("三次机会用完了")
4.5、range
#range(3) ----> 0,1,2
for i in range(3):
print(i)
#range(4,9)
for i in range(4,9): #左闭右开
print(i)
# range(4,9,2) ---->start,end,step
for i in range(4,9,2):
print(i)
5、循环语句(while...)
5.1、练习——用户登录验证
# 用户登录验证
# 登录成功失败都给予提示
# 最多可尝试3次密码,密码或用户名错误,提示你还有几次尝试机会
start = 1
num = 0
while start == 1:
username = input("请输入用户名")
password = input("请输入密码")
if username == 'root' and password == '123456':
print("登录成功")
start = 0
break
elif num == 2:
print("你已经登录三次了,下次重试时间为24小时后")
break
else:
num += 1
print("登录失败,你还有",3-num,'次机会')
6、pass、continue、break
6.1、pass:占位符
6.2、continue和break
7、关于流程控制的简单小练习
7.1、计算复利
想要知道如果把10000块钱存入银行,什么时候能变成20000(年利率为5%)
利息 = 本金*利率*时间。要求1:键盘要存入金额和目标金额;要求2:输出每年的本金和利息;要求3:给出需要多少年,才能达到目标金额
money = int(input("请输入你要存入的金额"))
target = int(input("请输入你要达到的目标金额"))
interest = 0
year = 0
while interest < target:
year += 1
interest = money*(1+0.05)
print(f"第{year}年的本金为:{money},利息为{interest-money}")
money = interest
else:
print(f"第{year}达到了目标金额")
7.2、接受一个字符串,看是不是回文
# method1
plalindrome = input("请输入一串字符串") # 回文
j = len(plalindrome)
i = 0
for k in range(j//2):
if plalindrome[i] == plalindrome[j-1]:
continue
else:
print("这不是回文")
break
else:
print("这是回文")
# method2
plalindrome = input("请输入一串字符串")
if plalindrome == plalindrome[::-1]:
print("这是回文")
else:
print("这不是回文")
7.3、打印输出九九乘法表
关于一些制表符的叙述
for i in range(1,10):
for j in range(1,i+1):
result = i*j
print(f"{j}*{i}={result}",end='\t')
print()
# 制表符"\t",就是相当于一个八个字符的格子,把要输入的东西一个个填进去。要是输入的东西大于了8,就重新生成一个八个字符的格子
7.4、打印100-999内的水仙花数
水仙花数:水仙花数等于各个位的立方之和。举个例子:153=1**3 + 5**3 + 3**3
# method1
153 = 1**3 + 5**3 + 3**3
for i in range(100,1000):
b = i//100
s = (i-b*100)//10
g = i - b*100 - s*10
if i == b**3 + s**3 + g**3:
print(i)
# method2
for i in range(100,1000):
a = i//100 # 9
b = i%100 #后面的99
c = b//10 #99的第一个9
d = b%10 #99的第二个9
m = a**3 + c**3 + d**3
if i == m:
print(i)
# method3
# 思路:可以进行切片
7.5、空气质量查询工具
password = input("空气质量查询工具,请按Enter键开始,'Q'或者'q'退出")
while password != 'q' and password != "Q":
pm = input("请输入要查询的pm2.5的值,如果要退出,请按'q'或者'Q'")
check = pm.replace(".","")
if check.isdigit() :
pm = float(pm)
if 0 <= pm <= 50.0:
print("空气质量:优")
continue
elif 51.0 < pm <= 100.0:
print("空气质量: 良")
continue
elif 101.0 < pm <= 150.0:
print("空气质量: 轻度污染")
continue
elif 151.0 < pm <= 200.0:
print("空气质量: 中度污染")
continue
elif 201.0 < pm <= 300.0:
print("空气质量: 重度污染")
continue
else:
print("空气质量: 严重污染")
continue
elif pm.lower() == 'q':
print("成功退出")
break
else:
print("输入不合法")
continue
else:
print("成功退出")
7.6、猜大小游戏
# 设置奖品 (玩了500把以上)
# 1、iphone18一台 (胜率在80%-90%)
# 2、3000块 (胜率在70%-80%)
# 3、1000块 (胜率在55%-70%)
import random
# 默认金豆为:1000
gold_film = 1000
# 玩家玩这个游戏的次数
num = 0
# 胜场
win = 0
password = input("猜大小游戏,请按Enter开始,当然你随便按也能开始,按Enter只是为了那该死的仪式感,输入'exit'可以退出游戏: ")
while password != "exit":
lucky = input("请输入猜'大'或者'小',要是想退出可以输入'exit'哦: ")
dice = 0
num += 1
if gold_film > 100:
for i in range(3):
dice += random.randint(1,6)
if 3 < dice <10:
result = '小'
else:
result = "大"
if lucky == result :
print("你猜对了,你可以随意在北京挑一套楼房")
gold_film += 100
win += 1
print(f"您当前还有{gold_film}的豆子")
elif lucky.lower() == 'exit' :
if num-1 == 0:
print("客观,你还没玩呢,就要走了嘛")
else:
print(f"幸好你收手了,不然我就亏大发了,您总共玩了{num-1}把,胜率为{float(win/(num-1)*100)}%")
if num-1 > 10:
if 0.55 < win/(num-1) <= 0.7:
print('恭喜你获得1000元奖励')
elif 0.7 < win/(num-1) <= 0.8:
print('恭喜你获得3000元奖励')
elif 0.8 < win/(num-1) <= 1:
print("恭喜你获得了一台iphone18")
else:
print("抱歉呀,虽然您的场数达到了要求,但是胜率实在低的不行,只能给您一个棒棒糖作为奖励啦")
break
elif lucky != result and lucky in ['大','小']:
print("你没有猜对,适当赌博有益身心健康,沉迷赌博家破人亡")
gold_film -= 100
print(f"您当前还有{gold_film}的豆子")
continue
else:
print("要么输入大或者小,要么就输入exit推出啦,别乱输入,听到没!")
num -= 1
else:
print("亲,不好意思,您的金豆数量不够了哦,请您尽快充值,或者输入'exit'退出哦,不然就要撵你走了")
print("{0:*^150}".format("这是一条可爱的分割线呢"))
else:
print("亲,不要轻易越过雷池哦")
7.7、关于这些练习的答案,博主有话要说
这些代码仅供参考,若有问题,可以互相讨论,相互进步