python基础编程-2

分支循环

  • 分支
age = 16
if age >= 18:  # 冒号条件结束
    print("你已经成年")
    print("你已经可以去上网")
else:  # 记得写冒号
    print("未成年赶紧回家啊")

score = input("请输入你的分数")
score = int(score)
if 90 <= score <= 100:
    print("优秀")
if 80 <= score < 90:
    print("良好")
if 60 <= score < 80:
    print("及格")
if 0 <= score < 60:
    print("不及格")

# if-else会提高执行效率,但也是可阅读性比较差,使用代码折叠
if 90 <= score <= 100:
    print("优秀")
else:
    if 80 <= score < 90:
        print("良好")
    else:
        if 60 <= score < 80:
            print("及格")
        else:
            if 0 <= score < 60:
                print("不及格")

# 多分支判断
if 90 <= score <= 100:
    print("优秀")
elif 80 <= score < 90:
    print("良好")
elif 60 <= score < 80:
    print("及格")
elif 0 <= score < 60:
    print("不及格")

# 优化体脂率案例,做容错处理
# 采集一个人的身高体重年龄性别,告诉他体脂率是否在正常范围内
# 功能分析:输入:身高体重年龄性别 处理数据:计算体脂率/判断体脂率是否在正常范围内 输出:是否正常
# 体脂率公式:BMI=kg/(身高*身高)米  体脂率=1.2*BMI+0.23*年龄-5.4-18.8*性别(男1女0) 男性15%-18% 女性25%-28%

# 输入:身高体重年龄性别

personHeight = input("请输入身高(m):")
personHeight = float(personHeight)

personWeight = input("请输入体重(kg):")
personWeight = float(personWeight)

personAge = input("请输入年龄:")
personAge = int(personAge)

personSex = input("请输入性别(男:1 女: 0):")
personSex = int(personSex)

# 身高0-3m、体重0-150、性别0或者1、年龄0-150
if not 0 <= personHeight <= 3 and 0 <= personWeight <= 150 \
        and (personSex == 1 or personSex == 0) and 0 <= personAge <= 150:
    # 退出
    print("数据不满足要求,退出程序")
    exit()

# 处理数据:计算体脂率/判断体脂率是否在正常范围内
BMI = personWeight / (personHeight * personHeight)
TZL = 1.2 * BMI + 0.23 * personAge - 5.4 - 18.8 * personSex
TZL /= 100
# # 0.10  1  0
# minNum = 0.15 + 0.10 * (1-personSex)  # 最低标准
# maxNum = 0.18 + 0.10 * (1-personSex)
# result = minNum < TZL < maxNum

# 区分男女
if personSex == 1:
    result = 0.15 < TZL < 0.18
elif personSex == 0:
    result = 0.25 < TZL < 0.28
# 输出
# 告诉用户是否正常

if personSex == 1:
    wenhao = "先生你好:"
    minNum = 0.15
    maxNum = 0.18
elif personSex == 0:
    wenhao = "女士你好:"
    minNum = 0.25
    maxNum = 0.28
# 提示输出
if result:
    notice = "你的身体健康"
elif TZL > maxNum:
    notice = "你的身体偏胖"
elif TZL < minNum:
    notice = "你的身体偏瘦"
print(wenhao, notice)

  • 循环(重复做事情)
# 想要多次重复执行某些操作
# 想要遍历集合时候
print("哈哈哈哈哈哈")
print("哈哈哈哈哈哈")
print("哈哈哈哈哈哈\n" * 5)

# 要考虑好循环的结束,修改条件、打断循环break
num = 0
condition = True
while condition:
    print("hhh")
    num += 1
    print(num)
    # 只要修改这个条件,下次就不会在执行
    if num == 10:
        condition = False       # 循环体内修改条件

# 优化
num = 0
# condition = True
while num < 10:
    print("hhh")
    num += 1
    print(num)
    # 只要修改这个条件,下次就不会在执行
    # if num == 10:
    #     condition = False       # 循环体内修改条件


# 计算1-10的数值总和
num = 0
result = 0
while num < 10:
    num += 1
    result += num
    print(num)
print("1-10累加和为:", result)

# while-else连用
# python语言中没有do-while循环
num = 0
result = 0
while num < 10: 
    num += 1
    print("num:", num)
else: # 条件不满足
    print("最后num值", num)
    print("循环结束")

num = 0
result = 0
while num < 10: 
    num += 1
    print("num:", num)
    break
else: # 条件不满足
    print("最后num值", num)
    print("循环结束")
# break后,else也不执行 输出 num:1

# for循环
# for x in xxx
#     循环语句
# for主要应用场景遍历一个集合
# 集合:字符串、列表
# for x in xxx:
# 当集合遍历完毕,循环结束
notice = "迎娶白富美,走上人生巅峰"
for c in notice:
    print(c)

pets = ["小白", "小黑", "小黄", "小花"]
for name in pets:
    print(name)

# for-else连用
name = "我爱中国"
for c in name:
    print(c)
else:
    print("集合遍历结束")

# for循环-反转字符串
notice = "迎娶白富美,走上人生巅峰"
result = ""
# 拆字
# "" + "迎" ="迎"
# "娶" + "迎" = "娶迎"
for c in notice:
    result = c + result
print(result)

# 打印1-100之间的偶数
# 函数 -> range
for num in range(1, 101):
    if num % 2 == 0:
        print(num, "是偶数")

# 循环的打断-break & continue
# break跳出整个循环,continue结束本次循环
for i in range(1, 10):
    if i == 6:
        break
    print(i) # 1 2 3 4 5

for i in range(1, 10):
    if i == 6:
        continue  # 不打印6
    print(i) # 1 2 3 4 5 7 8 9 

# 打断案列
# 一个简单的加法器
# 如果不退出程序,输出完毕之后,继续让用户使用
# 如果中间用户输入数据有误,则给出错误提示,从头开始,让用户输入数据
# 输入Q,退出
# while True:
#     num1 = input("请输入第一个数值:")
#     num1 = float(num1)
#     num2 = input("请输入第二个数值:")
#     num2 = float(num2)
#     if num1 > 100 or num2 > 100:
#         print("你输入的数据有问题,请重新输入")
#         continue   # 结束本次循环,重新开始
#     result = num1 + num2
#     print("两个数的和为:", result)
#     isQ = input("是否想要退出(q/Q:退出,其他:不退出继续)")
#     if isQ == 'q' or isQ == 'Q':
#         break
  • 循环和分支的嵌套
# 循环和分支的嵌套
# 打印1-100,3的倍数
numbers = range(1, 101)  #生成集合
for number in numbers:
    if number % 3 == 0:
        print("100以内3的倍数:", number)

# 外层循环执行一次,内层循环全被执行
for i in range(1, 3):
    for j in range(1, 8):
        print(j)

# 九九乘法表
# num = 9
# nums = range(1, num + 1)

for num in range(1, 10):
    nums = range(1, num + 1)
    for n in nums:
        print("%d * %d = %d" % (n, num, n * num), end="\t")  # 用Tab缩进作为间隔符

    print(" ")  # 默认换行

# pass是空语句,不用做任何事情,一般做占位符,是为了保持程序结构的完整性
age = 19
if age > 18:
    pass   # 以后填充
else:
    pass

# 分支循环,综合案列
# 3位数值,判断是否水仙花数
# 验证是否三位数值
# 1**3+5**3+3**3=153
# while True:
#     # 让用户输入数据
#     num = input("请输入三位数值:")
#     num = int(num)
#     # 数据有效性验证
#     # print(len(num))  # 字符串长度
#     if not 100 <= num <= 999:
#         print("你输入的数据无效,直接退出程序")
#         exit()
#     # 分离个位数、十位数、百位数
#     n1 = num // 100  # 百位数
#     n2 = num % 100 // 10  # 十位数
#     n3 = num % 10  # 个位数
#     # 判断是否是水仙花数
#     result = (num == n1 ** 3 + n2 ** 3 + n3 ** 3)
#     if result:
#         print("%d,是水仙花数" % num)
#     else:
#         print("%d,不是水仙花数" % num)


# 给定一个数值,让用户猜,相等结束,不相等,大了还是小了
# 准备数据
import random
num = random.randint(200,1000)
count = 0
while True:
    count += 1
    # 先用户输入一个结果
    result = input("请输入结果:")
    result = int(result)
    # 进行比对
    # 相等,给出正确提示,结束程序
    if result == num:
        print("恭喜你,猜对了,答案就是%d,你总共猜了%d次" % (result, count))
        exit()

    # 不相等,继续让用户猜
    # 如果大于,猜的数字太大了,应该小一点
    # 如果小于,猜的数字太小了,应该大一点
    elif result > num:
        print("你猜的数字太大了,应该小一点")
    else:
        print("你猜的数字太小了,应该大一点")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值