分支循环

79 阅读7分钟

1.if语句的基本格式:

if 要判断的条件:
    条件成立时,要做的事

需要注意的是在判断条件之后需要加上:,这是必须的,

并且在执行语句之前有 4 个空格缩进,判断语句的归属。

空格缩进与冒号是必须的

# if else的基本语句
age=input("请输入你的年龄")
# input默认输出类型为字符串类型。需要使用对其进行数据类型转换
age=int(age)
if age>=18:
    print("你已经成年")
    print("可以谈恋爱了")
    # else之前不需要带有4个空格缩进
else:
    print("你还没有成年")
    print("不能谈恋爱")
# 以下没有4个空格缩进表示不在if语句的作用域以内
print("祝你生活愉快")

有空格缩进的相当于在if的作用域里面,没有缩进就在作用域外 2.if else语句:

if 条件:
    满足条件要做的事
    .....
else:
    不满足条件要做的事
    .......

以下是具体的代码演示

if int(input("请输入你的年级:"))>12:
    print("你已经是一名大学生了")
else:
    print("你正在为考入大学进行努力")

如上代码也说明了在if else的条件判断中也可以加入input语句 3.elif语句 在进行多条件判断时,我们需要使用elif语句,具体格式如下

if 条件一:
    .........
elif 条件二:
    ........
elif 条件三;
    ........
..........
..........
else:
  .......

在 C语言中的 else if()在 python 中写成 elif+条件,最后一个使用 else,后面不需要加条件,当所有条件都不满足时执行,且 elif 之前也不需要空格缩进,如下是代码演示

vip=2
age=18
if vip>3:
    print("你是尊贵的会员,具有会员优惠")
elif age<18:
    print("你是未成年,具有有未成年优惠")
else:
    print("你不具有任何优惠")

在 if elif else 语句中判断是从上往下的判断,且 else 可以省略,但不满足任何条件时,所有程序都不执行 ,当一个程序执行了,之后的判断就不会进行了

且在判断时,可以将 input 直接写在条件判断那一块,记住要将其转化为 int 类型的数据

# 使用input插入判断语句中
if int(input("请输入你的年级:"))>12:
    print("你已经是一名大学生了")
else:
    print("你正在为考入大学进行努力")

再次强调一定要进行数据转换,input 输出的默认类型为字符串类型 在if语句中也存在嵌套循环,就是在if的作用域以内再写if语句,只有满足了第一个if的条件才会开始判断第二个if,嵌套的关键在于空格缩进,在if内的if需要再进行空格缩进,如下代码所示

if int(input("请输入您的年龄:"))>=18:
    print("您具有游玩的资格")
    if int(input("请输入您的会员等级,若无则输入0:"))>=1:
        print("您是会员用户,享有七折")
    else:
        print("您不具有折扣")
else:
    print("您是未成年,无游玩资格")
age=int(input("请输入你的年龄:"))
if age>=18:
    print("你是成年人,有资格评选")
    if age<30:
        print("你的年龄达标")
        if int(input("请输入你的任职时间:"))>2:
            print("你的任职时间达标,可以领取礼物")
        elif int(input("请输入你的级别:"))>=3:
            print("你的级别达标,可以领取礼物")
        else:
           print("你的任职时间和级别都不达标,无法领取礼物")
    else:
        print("你的年龄不达标")
else:
    print("你是未成年,无资格评选")

3.while循环的基础语法

while 条件:
    满足条件执行的事情

只要条件满足,就会无限循环,在使用while时需要注意不要使其进入无限循环在 python 中没有 i++,需要写 i+=1,且需要与判断语句中一样使用空格缩进

i=0
while i<3:
    print("小美我喜欢你")
    i+=1

在分支循环中也有一个经典的猜数字题目

这可以巩固判断,循环,嵌套的使用

image.png 以下是这道题的解法

import random
num=random.randint(1,10)
flag=True
Count=0
while flag:
    Count+=1
    gess_num=int(input("请输入你猜测的数字:"))
    if gess_num==num:
        print("恭喜你猜中了")
        print(Count)
        # 停止循环
        flag=False
    elif gess_num>num:
        print("你猜的数字大了")
    elif gess_num<num:
        print("你猜的数字小了")

4.while循环的嵌套使用 在嵌套循环中,有一道经典的案例题,就是打印 九九乘法表

i=0
# 控制行
while i<=9:
    i+=1
    j=1
    # 控制列
    while j<=i:
        print(f"{j}*{i}={j*i}\t",end='')
        j+=1
#输出一个空格来换行
    print(" ")

\t 代替空格来进行上下对齐 5.for循环的基础语句 python中的for循环与C语言中的for循环大不相同

for 临时变量 in 待处理的数据集:
    满足条件时执行的代码

for 循环就是将待处理数据依次挨个数据取出,每一次循环就将当前数据赋予这个临时变量,然后就可以在循环体里面取写代码,这个临时变量在循环体里也可以使用,以下是该代码的演示

name="itheima"
for x in name:
    # 将name的内容,挨个取出赋予x临时变量
    print(x)

输出结果为

image.png for 循环是将字符串的内容依次取出,所以 for 循环也称为遍历循环

循环的语句同样需要空格缩进 6.range语句 image.png

image.png 在使用 range 语句时,在语法一中获得的数据不包含 num,在语法二与语法三中不包含 num2,可以想象成使一个左闭右开的区间,当只写 num 时,不写区间,此时的数据是从 0 开始的

# range语法1
range(3)
for i in range(3):
    print(i)
# range语法2
range(5,8)
for i in range(5,8):
    print(i)
# range语法3
range(1,9,3)
for i in range(1,9,3):
    print(i)

使用 for 循环也可多次重复同一操作,例如

for x in range(5):
    print("欢迎来到软创实验室")

7.变量作用域 规范上来说 for 循环中的临时变量其作用域只在 for 循环内,但非强制性,如果要规范的在 for 循环外使用这个变量其实也很简单,就是在 for 循环外去定义这个变量,如下

i=0
for i in range(5)
    print(i)
print(i)

此时的书写是规范的,在作用域外打出的数据是 for 循环运行完后的数据,但如果没有i=0,系统不会报错,但是规范上是不允许的 8.for循环的嵌套使用 在嵌套使用中需要注意空格缩进,且 for 循环与 while 循环可以相互嵌套使用

当然也可使用 for 循环去打印九九乘法表,代码如下

for i in range(9):
    for j in range(i):
        print(f"{j+1}*{i+1}={(j+1)*(i+1)}\t",end='')
    print(" ")

9.循环中断:break和continue

image.png continue 是跳过本次循环直接进入下一次循环,continue 在嵌套循环中只作用于它所在循环的作用域中

image.png break 是直接结束循环,直接跳出循环,在嵌套循环中于 continue 一样,只作用于它所在循环的作用域

break 与 continue 都不会对它上层的过程产生影响 10.对分支循环的综合应用

image.png 具体的解法如下

sum=10000
people=20
for i in range(people):
    if sum==0:
        print("工资发完了,下个月领取吧")
        break
    import random
    grade=random.randint(1,10)
    if grade<5:
        print(f"员工{i},绩效分{grade},不发工资,下一位")
        continue
    else:
        sum-=1000
        print(f"员工{i}发放工资1000元,账户余额还剩{sum}元")