python基础阶段(二)——分支循环

1.python分支结构——if语句

概念:程序的流程走向比较像一颗分散的树

 1.单分支判断

  • 结构:if条件...... ,条件满足时执行 
age = 17
if age >= 16 :  
    print("你已经成年")
    print("恭喜")
print("HELLO WORLD") #不属于if语句
  • 注意:1. if条件后面的冒号不要忘记

                  2. print函数前面需要加一个TAB缩进,这是python与其他语言的不同,其它语言中,

                       一般使用{ }来确定整个代码块,而python是使用TAB缩进确定代码块

                  3. if语句可以连续多次使用,可以认为是并列

2.双分支判断

  • 结构:if条件......:条件满足时执行语句

                     else:条件不满足时,执行语句

age = input("请输入你的年龄:")
age = float(age)

if age > 18 :
    print("你已经成年")
if age == 18
    print("恭喜你成年")
else:
    print("你还未成年")
  • 问题:上述代码也存在一些问题,例如,如果第一行已经判定age >18,那么按理来说就无需

                 再进行后面代码的执行(节省时间),但是在上述代码中,需要每行依次判断,不合理 

3.if嵌套

结构:

  • if条件......:条件满足时执行语句(在这个位置可以再次编写一个if语句)

                     else:条件不满足时,执行语句(这个位置也是同理)

  • 对上面程序的改进(加一个嵌套):
if age > 18 :
    print("你已经成年")
else:
    if age == 18 :
        print("恭喜你成年")
    else:
        print("你还未成年")
  • 问题:如果嵌套过多,可能会在后续或他人阅读时不易理解

4.多支判断

结构: if条件......:条件满足时执行语句

           elif(不能直接写elseif)条件......:    条件满足时执行语句        

           else:条件不满足时,执行语句

这个结构也不会全部都执行,找到满足条件的语句后就会停止

if age > 18 :
    print("你已经成年")
elif age == 18 :
    print("恭喜你成年")
else:
    print("你还未成年")

5.注意事项

   1.区分代码块:TAB缩进(shift + TAB:取消缩进)

   2.不要写嵌套层级太深的代码,后期难以理解

   3.不要忘记每个条件后面的 冒号(:)

6.案例优化

在这里我们要优化上一章的体脂率计算问题,问题描述如下:

  • 案例描述:采集一个人的身高, 体重, 年龄和性别; 告诉Ta, 自己的体脂率是否在正常范围之内

1.输入部分优化 

   首先我们要限定各项输入的数据都在正常范围内,例如:0<身高<3,0<体重<300,0<年龄     <150,性别为0或1

# 数据有效性的验证,容错处理
if 0 < height < 3 and 0 < weight < 300 and 0 < age < 150 and (sex == 1 or sex == 0):

2.数据处理部分优化

在数据处理部分,我们要做到根据数据区分出男或女,然后针对男女的判定标准, 分别进行计算

# 区分男女
if sex == 1 :
    result = 0.15 < TZL < 0.18
else :
    result = 0.25 < TZL < 0.28

3.输出结果的优化

在输出结果部分,我们要做到根据不同性别及不同健康程度,做出不同的回答

4.案例具体代码

# 身高
height = input("请输入身高(m):")
height = float(height)
# 体重
weight = input("请输入体重(kg):")
weight = float(weight)
# 年龄
age = input("请输入年龄:")
age = float(age)
# 性别
sex = input("请输入身高(男:1 女:0):")
sex = float(sex)

# 数据有效性的验证,容错处理
if not( 0 < height < 3 and 0 < weight < 300 and 0 < age < 150 and (sex == 1 or sex == 0)):
    # 退出程序
    print("数据不满足需求,退出程序")
    exit()

# 处理数据
 # 计算体脂率
           # BMI = 体重(kg) / (身高 * 身高)(米)
           # 体脂率 = 1.2 * BMI + 0.23 * 年龄 - 5.4 - 10.8*性别
BMI = weight / (height * height)
TZL = (1.2 * BMI + 0.23 * age - 5.4 - 10.8 * sex) * 0.01

# 区分男女
if sex == 1 :
    result = 0.15 < TZL < 0.18
else :
    result = 0.25 < TZL < 0.28

# 输出
# 性别部分
if sex == 1 :
    wenhao = "先生你好:"
    min = 0.15
    max = 0.18
else :
    wenhao = "女士你好:"
    min = 0.25
    max = 0.28

# 健康程度部分
if min < TZL < max :
    notice = "恭喜您,您的身体非常健康,请继续保持!"
else :
    if TZL > max :
        notice = "请注意,您的体脂率偏高,请加强体育锻炼!"
    else :
        notice = "请注意,您的体脂率偏低,请提高自身重视!"

print(wenhao,notice)

2.python循环结构

1.循环三要素:

  1)循环变量的初始化
  2)循环的条件(以循环变量为基础)
  3)循环变量的改变(向着循环的结束变)
循环变量:在整个循环过程中所反复改变的那个数

2.while循环

  • 结构:while条件...... : 

                          条件满足时执行的代码块 

  •  注意:一定要想好循环结束的条件,不要让程序陷入死循环 

  • 练习:

       (1)打印十遍 “ 你好 ”

       (2)计算1-10的总和

# 打印十遍,你好
# 法一: print("你好\n" * 10)
# while循环
i = 1
while i <= 10 :
    print("你好")
    print(i)
    i = i + 1
# 求1-10的总和
i = 1
sum = 0
while i <= 10 :
    sum = sum + i
    i = i + 1
print(sum)
  • 补充:while - else循环(了解)

                  while条件......:

                                        条件满足时执行的代码块

                  else:

                                          条件不满足时执行的代码块 

3.for循环

  • 使用场景:遍历一个集合,当集合中元素遍历完毕,就会结束
  • 结构: 

        for  (元素)  in (集合):

                                            循环语句

        集合有这几种:字符串,列表

# 遍历一个集合(字符串,列表)

# 字符串:取出字符串中的每一个字
notice = "你好,世界"
for i in notice:
    print(i)

# 列表 (取出列表中每一个元素)
pets = ["小猫","小狗","小猪"]
for name in pets:
    print(name)
  • for - else :与while - else相似
  •  练习:

       (1)反转字符串 

        (2)打印1~100之间的偶数

# 反转字符串
notice = "你好,世界"
result = ""
for word in notice:
    result = word + result
print(result)

# 打印1~100之间的偶数
# range函数 ——> 创建整数列表,左闭右开
number = range(1,101)
for num in number :
    if num % 2 == 0:
        print(num)

4.循环打断——break & continue

break:打断本次循环, 跳出整个循环

continue:结束本次循环, 继续执行下次循环

for i in range(1,11):
    if i == 6:
        break
    print(i)
# 输出结果为1,2,3,4,5
 
   
for i in range(1,11):
    if i == 6:
        continue
    print(i)
# 输出结果为1,2,3,4,5,7,8,9,10

  • 案例

题目:做一个简单的加法计算器, 让用户输入两个数值, 输出对应的和 

要求:(1)用户如果不退出这个程序, 则输出完毕之后, 继续让用户使用

           (2)如果用户输入一个标识: q, 识别成退出

           (3)如果用户输入的数据超出范围(100), 则给出错误提示, 并从头开始, 让用户数据数值

要完成这个题目,我们可以先编写一个基础的代码,然后再根据要求做修改,基础如下

# step1 让用户输入两个数值
num1 = input("请输入第一个数值:")
num2 = input("请输入第二个数值:")
num1 = float(num1)
num2 = float(num2)

# step2 计算两个数值的和
result = num1 + num2

# step3 输出数值
print(f"{num1}+{num2}的结果为:{result}")

然后再根据要求做修改,代码如下:

while True:  # 相当于完成了要求(1)可以一直循环
    # step1 让用户输入两个数值
    num1 = input("请输入第一个数值:")
    num2 = input("请输入第二个数值:")
    num1 = float(num1)
    num2 = float(num2)

    if num1 > 100 or num2 > 100:          # 完成了要求(3)
        print("您输入的数据有问题,请重新输入")
        continue

    # step2 计算两个数值的和
    result = num1 + num2

    # step3 输出数值
    print(f"{num1}+{num2}的结果为:{result}")

    isq = input("是否想要退出程序(q:退出程序 其他:不退出程序):")   # 完成了要求(2)
    if isq == "q":
        print("程序已结束")
        break
    else :
        print("程序已刷新")

5.循环内嵌套循环

    外循环,循环一次;内循环,循环所有

  • 案例:九九乘法表
# 99乘法表
# 问题化简:给定一个数值x,打印出从1~x之间的所有数字

for num in range(1,10):
    nums = range(1,num+1)
    for x in nums:
        print(f"{x} * {num} = {x * num}",end="\t")
    print("") # 实现换行功能

6.pass语句(补充)

   pass语句是空语句,不做任何事情,只是为了保持程序结构的完整性而用作占位语句

age = 19
if age > 18:
    pass
else:
    pass
#在这里,pass先占位,让程序不会报错,等后续可以用其他代码代替

3.综合案例

1.水仙花数的判定

  • 用户输入一个3位数值, 判定是否是水仙花数
  • 要求:

        (1)要求对三位数值验证:
                 只需要验证是不是三位数值就可以,暂时不考虑非数字的情况
        (2)判定3位水仙花数的标准
                 百位的3次方 + 十位的3次方 + 个位的3次 = 数值本身

# 水仙花数的判定
# step1 三位数数值的输入与验证
while True:  # 如果不是三位数,可以让程序一直执行
    num = input("请输入一个三位数:")
    num = float(num)

    if 100 <= num <= 999:
        # step2 判定是否为水仙花数
        bai = num // 100
        shi = num % 100 // 10
        ge  = num % 10

        if bai**3 + shi**3 + ge**3 == num:
            # step3 反馈给用户答案
            print("该数值为水花仙数")
        else:
            print("该数值不是水花仙数")
    else:
        print("请重新输入,必须为三位数")

2.猜数字

  • 给定一个数值, 让用户猜
  •   要求

         (1) 程序内给定一个数字, 比如500
         (2) 然后, 让用户通过输入一个数值来猜,
                   如果数值相等, 则代表正确,程序结束
                   如果不相等, 则提示是大了还是小了,继续猜直到猜对为止,并且输出猜了多少次

# 猜数字
import random
# step1 数据准备
num = random.randint(1,500)
count = 0
while True:
# step2 数据处理
    result = input("请输入一个数值:")
    result = float(result)
    count = count +1
    if result == num:
        print(f"恭喜你,答对了,总共猜了{count}次,你真是个聪明蛋子!")
        exit() # 如果相等,程序直接退出
    elif result < num:
        print("你猜的数字小了,应该大一点")
    else:
        print("你猜的数字大了,应该小一点")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值