day03IF续和循环

IF分支机构续和for循环

IF分支结构续

1. if多分支结构: if - elif - else

​ 问题引入:定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常

​ 公式: 体重(kg)/身⾼(m)的平⽅值 在18.5 ~ 24.9之间属于正常。

# 方法一:普通写法
height = 1.76
weight = 97
result = weight / height ** 2
if 18.5 <= result <= 24.9:
    print("正常")
if result < 18.5:
    print("偏轻")
if result > 24.9:
    print("偏重")

# 方法二:C语言写法
height = 1.76
weight = 97
result = weight / height ** 2
if 18.5 <= result <= 24.9:
    print("正常")
else:
    if result < 18.5:
        print("偏轻")
    else:
        print("偏重")

# 方法三:Python写法
height = 1.76
weight = 97
result = weight / height ** 2
if 18.5 <= result <= 24.9:
    print("正常")
elif result < 18.5:
    print("偏瘦")
else:
    print("偏重")
  • 应用场景:根据不同条件执行不同操作

  • 语法:
    if 条件语句1:
    代码段1
    elif 条件语句2:
    代码段2
    elif 条件语句3:
    代码段3


    else:
    代码段N

  • 执行过程:
    从上往下依次判断条件语句的结果是否为True,如果为True就执行这个if或者elif对应的代码段,执行完if再判断后面的条件,
    也不再执行后面的代码段
    else后面的代码只有在前面所有的条件都不满足的时候才会执行。

    练习:输入成绩,如果输入的
    成绩在90分以上(含90分)输出A;
    80分-90分(不含90分)输出B;
    70分-80分(不含80分)输出C;
    60分-70分(不含70分)输出D;
    60分以下输出E。

    grade = float(input("请输入成绩(百分制): "))
    if grade > 100 or grade < 0:
        print("你的输入有误")
    elif grade >= 90:
        print("A")
    elif grade >= 80:
        print("B")
    elif grade >= 70:
        print("C")
    elif grade >= 60:
        print("D")
    else:
        print("E")
    

2. if嵌套

练习:输入一个数,如果输入的数是偶数就打印’偶数’, 否则打印奇数。如果这个数能被4整除,还要打印’4的倍数’

num = int(input("请输入一个数: "))
if num % 2 == 0:
    if num % 4 == 0:
        print(num, "偶数且能够被4整除")
    else:
        print(num, "是偶数但不能被4整除")
else:
    print(num, "是奇数")

for循环

问题引入:打印亚索台词10遍

print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")
print("面对疾风吧!")    #较为麻烦

for _ in range(10):
    print("面对疾风吧!")  # 引入循环

1.循环结构 - 让代码重复执行(for循环、while循环)

2.for循环

  • 语法
    for 变量 in 序列:
    循环体1
    循环体2

    循环体N #注意和for保持缩进

  • for、in、冒号 - 固定写法
    变量 - 变量名(程序员随便命名)
    序列 - 容器型数据类型的数据,例如:字符串、列表、元组、集合、字典、迭代器、生成器、range等
    循环体 - 和for保持缩进的一条或者多条语句;需要重复执行的代码

  • 执行过程:
    让变量去序列中取值,一个一个的取,取完为止,每取一个值执行一次循环体。

    for x in "abcd":
        print("hello!")  # 打印四遍hello!
    
    """
    第一次循环: x = 'a'  ->  print("hello!")
    第二次循环: x = 'b'  ->  print("hello!")
    第三次循环: x = 'c'  ->  print("hello!")
    第四次循环: x = 'd'  ->  print("hello!")
    第五次循环: 序列元素取完,x取不到值,循环结束
    """
    

    练习:"++++"打印5次

    for x in 'klk01':
        print('++++')  # 打印五遍"++++"
    

    思考:’++++'打印100次

    message = '++++'
    for _ in range(100):
        print(message)  # 打印100遍"++++"
    

range函数

  • range(N) - 产生[0,N)的数字范围,里面包含:0,1,2,3… N-1 (N>0)
    range(M,N) - 产生[M,N) (不写step默认为1) 的数字范围, 里面包含:M,M+1,…N-1 (N>M)
    range(M, N, step) - 从M开始每次加step产生下一个数…N取不到
    range(1, 10, 2) -> 1, 3, 5, 7, 9
    range(10,1,-2)-> 10, 8, 6, 4, 2

    print(range(10))  # range(0,10)
    for i in range(10):
        print(i)      # 打印 0,1,2...9
    

    练习:产生数字范围1~100并且打印出来

    for i in range(1, 101):
        print(i)
    

    练习:产生数字范围-100~1并且打印出来

    for i in range(-100, 0):
        print(i)
    

    练习:写程序产生数字: -1, -3, -7, -9

    for x in range(-1, -10, -2):
        print(x)
    

    练习:写程序产生数字:5, 4, 3, 2, 1

    for x in range(5, 0, -1):
        print(x)
    

    练习: 计算1+2+3+…+100的和

    注意:

    • sum1 = 0

    • for循环: i 取值范围是 1 到 100
      num = 1: sum1 += i -> sum1 = sum1 + i = 0 + 1 = 1
      num = 2: sum1 += i -> sum1 = sum1 + i = 1 + 2 = 3
      num = 3: sum1 += i -> sum1 = sum1 + i = 3 + 3 = 6

    sum1 = 0
    for i in range(101):
        sum1 += 
    print("1+2+3...+100 的和为: ", sum1)  # 5050
    

    练习: 求 10 + 20 + 30 +…+100的和

    sum1 = 0
    for i in range(10, 101, 10):
        sum1 += i
    print("10+20+30+...+100的和为: ", sum1)
    

    练习:统计0~100中能被3整除的数的个数

    # 普通版
    count = 0
    for i in range(1, 101):
        if i % 3 == 0:
            count += 1
    print("1~100能被3整除的个数", count)
    
    # 简化版
    count = 0
    for i in range(3, 101, 3):
        count += 1
    print("1~100能被3整除的个数", count)
    

while循环

  • 语法
    while 条件语句:
    代码段(循环体)

  • 说明:
    while、冒号 - 固定写法
    条件语句 - 任何有结果的表达式都可以(赋值语句不行)
    循环体 - 和while保持一个缩进的一条或多条语句;需要重复执行的代码

  • 执行过程
    不断判断条件语句是否为True,为True就执行循环体,然后再判断.为False就结束循环

    num = 0
    while num < 5:
        print("=====")
        num += 1
    
  • num = 0

  • while循环
    第一次: while num < 5 -> while 0<5 while True -> print("="); num+= 1 -> num = 1
    第二次: while num < 5 -> while 1<5 while True -> print("
    ="); num+= 1 -> num = 2
    第三次: while num < 5 -> while 2<5 while True -> print("="); num+= 1 -> num = 3
    第四次: while num < 5 -> while 3<5 while True -> print("
    ="); num+= 1 -> num = 4
    第五次: while num < 5 -> while 4<5 while True -> print("====="); num+= 1 -> num = 5
    第一次: while num < 5 -> while 5<5 while False -> 循环结束

  • for循环和while循环的选择
    循环次数确定就使用for循环;循环次数不确定就使用while循环。

    练习:不断输入数据,知道输入的内容是0为止

    """
    请输入数字:9
    请输入数字:100
    请输入数字:4
    请输入数字:5
    请输入数字:0
    """
    num = '1'
    while num != '0':
        num = input("请输入数字(输入0退出): \n")
        print("你输入的数字为", num)
    

循环关键字

  1. continue

    只能出现在循环体中!
    continue的作用:直接结束当次循环,直接进入下一次循环的判断

    for x in range(3):
        print("猥琐发育,别浪!")
        continue
        print("技能不全,撤退!")  # 打印三遍猥琐发育,别浪!
    
  2. break

    只能出现在循环体中!
    break的作用:直接结束整个循环

    for x in range(3):
        print("优先攻击输出!")
        break
        print("干得漂亮!")  # 打印一遍优先攻击输出
    

    例子:输入数字,直到输出0结束程序

    # 第一步:while True
    while True:
        # 第二步:描述清楚需要重复执行的操作
        value = input("请输入数字: ")
        # 第三步:添加循环结束的条件
        if value == '0':
            break
    

    练习:使用while循环打印1~10

    num = 1
    while True:
        if num >= 10:
            print("数字{},且{}>=10,程序结束".format(num, num))
            break
        else:
            print("第{}数字为{}".format(num, num))
            num += 1
    
  3. else

    • 完整的for循环
      for 变量 in 序列:
      循环体
      else:
      代码段

    • 完整的while循环:
      while 条件语句:
      循环体
      else:
      代码段

    • else的存在不影响原来循环体的执行。
      当循环自然死亡,else后面的代码段会执行。如果循环是因为遇到break而结束的,else后面的代码不会执行

      for x in range(3):
          print(x)
          if x == 2:
              break
      else:
          print("else中的代码")
      

    ​ 练习:判断一个数是否为素数(质数)

    ​ 2、3、5、7、11、13 -> 质数
    ​ 4、6 -> 非质数

    • for循环版本

      num = 2021
      for x in range(2, num):
          if num % x == 0:
              print(num, "不是质数,它的因数为{}与{}".format(x, num / x))
              break
      else:
          print(num, "是质数")
      
    • while循环版本

      while x < num:
          if num % x == 0:
              print(num, "不是质数,它的因数为{}与{}".format(x, num / x))
              break
          x += 1
      else:
          print(num, "是质数")
      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值