python流程控制
“你为什么要那么努力?”想去的地方很远,想要的东西很贵,喜欢的人很优秀,父亲的白发,周围人的嘲笑,以及,天生傲骨。——《雅俗共赏》
文章目录
一、顺序结构
-
顺序结构是按照线性顺序自上而下依次执行的一种运行方式
-
# 顺序结构 # 按先后顺序自上而下依次执行代码 import math # 输入三条边长 a = int(input("请输入边长a:")) b = int(input("请输入边长b:")) c = int(input("请输入边长c:")) # 计算半边长 p = (a+b+c)/2 # 计算面积 # sqrt函数 => 开平方 s = math.sqrt(p*(p-a)*(p-b)*(p-c)) print("三角形的面积是:", s)
二、选择语句(if…else…)
-
选择结构/分支结构
• 是根据程序条件判断结果而选择不同向前执行路径的结构
• 选择结构分为单分支和二分支结构
-
if会根据表达式的布尔值结果进行选择
-
if语句使用缩进来区分代码块,注意冒号(:)
-
#将三角形三条边长,求面积 #方法一 # import math # a = int(input("请输入边长a:")) # b = int(input("请输入边长b:")) # c = int(input("请输入边长c:")) # if a>0 and b>0 and c>0: # if a+b>c and a+c>b and b+c>a: # p = (a+b+c)/2 # result = math.sqrt(p*(p-a)*(p-b)*(p-c)) # print(f"三角形的面积为{result}") # else: # print("存在两边之和小于第三边") # else: # print("输入的边长存在小于等于零") #方法二 # import math # a = int(input("请输入边长a:")) # b = int(input("请输入边长b:")) # c = int(input("请输入边长c:")) # if a<0 or b<0 or c<0: # print("输入的边长存在小于等于零") # elif a+b>c and a+c>b and b+c>a: # p = (a + b + c) / 2 # result = math.sqrt(p * (p - a) * (p - b) * (p - c)) # print(f"三角形的面积为{result}") # else: # print("存在两边之和小于第三边") #if的三元运算 # 输入一个学生的成绩,判断“合格、不合格" score = int(input("请输入成绩")) if score >= 60: result = "合格" else: result = "不合格" print(result) result = "合格" if score >=60 else "不合格" print(result)
-
练习
-
用户登录 • 输入用户名,密码 • 如果用户名为”root”,密码为”123456”,则登录成功,否则登录失败 username = input("请输入用户名:") passwd = input("请输入密码:") if username == 'root' and passwd == '123456': print('登录成功') else: print('登录失败')
三、循环语句(for…)
-
循环语句(for)
• for循环的功能是,对于iterable中的每一个元素,都”do something”
• 比如:批量重命名,重复做一次事N次
-
else -> 当for是正常循环退出时会执行else部分的代码
-
# for =》从一个可迭代对象iterable中依次取出所有的元素 # item => 临时变量 # 可迭代对象 => 字符串,列表,元组 # “bacdefg" # [1, 2, 3, "abc"] # (1, 2, 3, "abc") # 可以从对象中依次取出元素 # for item in 可迭代对象: # 循环体 # else: # 可选分支(只在最后执行一次) # 退出时会执行else部分的代码 判断字符串大小写 • 让用户输入一个字符串 • 分别取出每个字符,如果为大写输出1,如果为小写输出0 • 如,用户输入”aBc”则输出”010” str1 = input("请输入一个字符串:") for i in str1: if i.isupper(): print(1,end="") else: print(0,end="") 用户登录验证 • 登录成功/失败都给予提示 • 最多可尝试3次密码 # for i in range(3): # username = input("请输入用户名:") # passwd = input("请输入密码:") # if username == 'root' and passwd == '123456': # print('登录成功') # break => 退出循环 # else: # print('登录失败')
-
练习
猜数字 • 在程序内定义一个数字,让用户猜 • 检查用户输入的是否为数字 • 键盘接收用户输入,猜对或猜错都给出提示(大/小) • 最多能猜3次 • 给出用户最终猜的结果,及花了几次来猜 number = 88 for i in range(3): digit = input("请输入你的数字:") if digit.isdigit(): digit = int(digit) if digit == number: print(f"恭喜你答对了!总共用了{i+1}次机会") break elif digit<number: print(f"你猜的太小了,你还有{2-i}次机会") else: print(f"你猜的太大了,你还有{2-i}次机会") else: print(f"你输入的不是数字,请重新输入!你还有{2-i}次机会") else: print(f"你全部猜错了!下次再来")
四、循环语句(while…)
- 循环语句(while)
• while循环的功能是,只要condition的布尔值为True,则一直循环执行”do something”
• 比如:批量重命名,重复做一次事N次
-
用户登录验证 • 登录成功/失败都给予提示 • 最多可尝试3次密码 # # i => 计数 # i = 0 # while i < 3: # i += 1 # username = input("请输入用户名:") # password = input("请输入密码:") # if username == "root" and password == "123456": # print("登录成功") # break # else: # print("登录失败,请再试一次") # else: # print("登录失败,请明天再试")
-
练习
计算复利:想知道如果把10000块钱存入银行,什么时候能变成20000 吗?(年利率为5%) 利息 = 本金*利率*时间 • 键盘要存入的金额及目标金额 • 输出每年的”本金+利息“ • 给出需要多少年,”本金+利息“ >=目标金额 # money = int(input("请输入你的本金:")) # target = int(input("请输入你的目标金额:")) # n = float(input("请输入年利率:")) # year = 0 # while money<target: # year +=1 # interest = money*n # print(f"第{year}年的本息和为:{money+target}") # money = money+interest # else: # print(f"需要存{year}年")