Python学习记录-03-控制流

前面写到的程序,基本都是从上到下,按顺执行;但是,这并不能够满足所有的情况,所以需要一些语句实现:根据不同的情况执行不同的语句。比如:根据现在的时间,输出早上好或者晚上好。

所以就有:控制语句,在python中,控制语句有:if、for、while,三种

1.if

if :检查条件
如果条件为真(True),就执行一块的语句(if-black或if块);
如果条件为假(False),就执行另一块的语句(else-black或else块),其中else块可选

例:

alice_age=33  #此处定义变量,类似“盒子”,存储alice的年龄

#int()函数,把收到的字符串转换为整数

#input()函数用于接收用户输入,int()函数将输入的字符串转换为整数

guess = int(input("Guess Alice's age: "))   #这句就是让用户输入一个数字,作为猜测的年龄,存到guess这个变量里

# if-elif-else 是"条件判断"结构,程序会从上到下依次检查条件

if guess == alice_age:    #第一个条件,判断用户输入的数字guess变量,是否等于alice的年龄;==表示判断两个值是否相同,=是赋值

    print("Congratulations! You guessed correctly.")  #一样,则成功,不一样,则执行下一个判断条件

elif guess < alice_age:   #第二个条件,判断用户输入的数字guess变量,是否小于alice的年龄,elif为(else if的缩写)

    print("Too low! Try again.")

else:                    #else ,也就是第三个条件,即前面的条件都不满足,就执行此处的代码

    print("Too high! Try again.")

print("The correct age is:", alice_age)  # 条件判断结束后的代码,无条件执行,(无论猜对猜错都会执行)

#input()函数,得到的是字符串,必须要用int()函数转换为整数,才能进行大小比较,否则会报错

#比如输入abc,程序会报错(ValueError),因为abc无法转换为整数

#python中,使用缩进,来表示代码是哪个分支;

#if/elif/else结构中,代码块的缩进必须一致,否则会报错(IndentationError)

执行及输出:

Guess Alice's age: 23
Too low! Try again.
The correct age is: 33

注意:对于if的判断,每个判断条件后面都要加冒号,别忘了

if guess == alice_age: #第一个判断
	print("")
elif guess < alice_age: #第二个判断
	peint("")
else:    #第三个判断
	print("")

2.while

while语句能够实现条件为真的前提下,重复执行某个块语句。
whle属于循环的一种。
while语句中也能使用else。

例子:

bob_age=66
running = True  # 定义一个布尔变量running,初始值为True,用于控制循环的运行状态
while running:  # while循环,条件为running为True时,循环继续执行
    guess = int(input("Guess Bob's age: "))  # 接收用户输入的猜测年龄,并转换为整数
    if guess == bob_age:  # 判断用户输入的数字是否等于Bob的年龄
        print("Congratulations! You guessed correctly.")  # 猜对了,输出成功信息
        running = False  # 将running设置为False,结束循环
    elif guess < bob_age:  # 判断用户输入的数字是否小于Bob的年龄
        print("Too low! Try again.")  # 猜低了,提示用户再试一次
    else:  # 如果前两个条件都不满足,则执行此处代码
        print("Too high! Try again.")  # 猜高了,提示用户再试一次

输出:

Guess Bob's age: 56
Too low! Try again.
Guess Bob's age: 89
Too high! Try again.
Guess Bob's age: 66
Congratulations! You guessed correctly.

过程:

#0.上述使用while,实现了“一直猜,直到猜对”

#1.定义了bob_age作为变量,存储bob的年龄

#2.定义了running变量,初始值为True,用于控制循环的运行状态

#3.进入while循环,条件为running为True时,循环继续执行.

#4.在循环中,使用input()函数接收用户输入的猜测年龄,并使用int()函数将其转换为整数,存储在guess变量中

#5.使用if-elif-else结构进行条件判断:

#   - 如果guess等于bob_age,输出成功信息,并将running设置为False,结束循环

#   - 如果guess小于bob_age,输出提示信息,提示用户再试一次

#   - 如果guess大于bob_age,输出提示信息,提示用户再试一次

#6.循环会继续执行,直到用户猜对Bob的年龄,running被设置为False,循环结束


#也就是说,默认开关是打开的(True),从而进入第一个循环

#在给出的例子中,第一个循环,输入了56,则第一个56先进入guess变量,然后判断56是否等于66,不等于,则进入elif判断,56小于66,输出提示信息“Too low! Try again.”,此时running仍然为True,然后循环继续执行。

#第二次循环,输入了89,则89进入guess变量,然后判断89是否等于66,不等于,则进入elif判断,89大于66,则进入else分支,输出提示信息“Too high! Try again.”,此时running仍然为True,然后循环继续执行。

#第三次循环,输入了66,则66进入guess变量,然后判断66是否等于66,相等则输出成功信息“Congratulations! You guessed correctly.”,然后将running设置为False,结束循环

额外注意:

#上述代码的测试中,如果输入了66.5,则会报错:ValueError: invalid literal for int() with base 10: '66.5'
#此处出现了和前面--if循环部分,所提到的一样的错误:
#input()函数,得到的是字符串,必须要用int()函数转换为整数,才能进行大小比较,否则会报错
#比如输入abc,程序会报错(ValueError),因为abc无法转换为整数;输入的是 `66.5`,`input()` 接收到的是字符串 `"66.5"`。`int()` 一看:这串里有个小数点 `.`,不是纯整数格式,直接报错。
#66.5和66.0都会报错,所以int()只处理整数,这个需要牢记

#并且对于每个判断条件,都是以冒号结尾

3.for

for是另外的一种循环语句,就是会一直迭代,直到遍历每一个项目
例子:

for i in range(1,6):  #range(1,6)表示从1到5的整数序列,包含1但不包含6;即左闭右开区间[1,6)

    #循环体内的代码块,执行5次,每次i的值依次为1,2,3,4,5,也就是分别把数字1,2,3,4,5赋值给变量i,然后执行循环体内的代码块

    print(i)   #循环体内为打印i的值,也就是打印1,2,3,4,5

else:  #for循环的else块-python中,for循环可以有一个else块,当for循环正常结束(没有被break语句打断)时,会执行else块中的代码

    print("end")  #打印for循环结束的提示信息;即循环结束,打印end

输出:

1
2
3
4
5
end

4.break

break为跳出循环、终止循环,即循环条件没有变为False,或者是没有完全迭代完,也中断
例子:

alice_age=90  #定义变量,存储alice的年龄

while True:  #无限循环,条件为True时,循环继续执行

    guess = int(input("guess alice_age:"))  #接收用户输入的猜测年龄,并转换为整数

    if guess == 90:        #判断用户输入的数字是否等于alice的年龄

        break  #  #如果猜对了,使用break语句跳出循环,结束循环

    else:  #如果前面的条件不满足,则执行此处代码

        print("You guessed wrong")  #猜错了,输出提示信息

#循环结束后,才执行此处

#即只有当用户猜对了alice的年龄,才会跳出循环,执行循环结束后的代码

print("You guessed it right! Game over")

输出:

guess alice_age:999
You guessed wrong
guess alice_age:90
You guessed it right! Game over

注意:如果没有break,可以写为如下内容,则会一直执行,无论是否猜对

alice_age=90  #定义一个变量alice_age,并赋值为90,表示Alice的年龄

while True:

    guess = int(input("guess alice_age:"))  #接收用户输入的猜测年龄,并转换为整数

    if guess == alice_age:        #判断用户输入的数字是否猜对

       pass  #占位,什么都不做

    else:  #如如果猜错了

        print("You guessed wrong")  #猜错了,输出提示错误信息

输出

guess alice_age:90
guess alice_age:90
guess alice_age:88
You guessed wrong

5.continue

跳过当前循环块中的剩余语句,并继续该循环的下次迭代;比如可以格式校验

alice_age = 89          # Alice 的真实年龄

while True:

    # 接收用户输入(先不转整数,避免用户输入字母时直接崩溃)

    user_input = input("Guess Alice's age: ")

    # 如果用户输入了空字符串(直接回车),跳过本次循环

    if user_input == "":

        print("输入不能为空,请重新输入!")

        continue        # continue:立刻结束"本次"循环,直接回到 while 开头

                        # 后面的代码不会执行,避免对空字符串做 int() 转换导致报错

    # 如果用户输入的不是纯数字(比如 abc、12.5、66a)

    if not user_input.isdigit():

        print("请输入一个正整数!")

        continue        # continue:跳过本次循环剩余代码,要求重新输入

                        # 如果没有 continue,程序会执行到 int() 并报错

    # 到这里,输入已经确定是合法数字了,再转成整数

    guess = int(user_input)

    if guess == alice_age:      # 猜对了

        print("Congratulations! You guessed correctly.")

        break                   # break:跳出整个循环,结束游戏

    elif guess < alice_age:     # 猜小了

        print("Too small! Try again.")

    else:                       # 猜大了(既不是等于,也不是小于)

        print("Too big! Try again.")


# 循环结束后执行

print("Game over!")

输出:

Guess Alice's age: ahb
请输入一个正整数!
Guess Alice's age: ss@@22
请输入一个正整数!
Guess Alice's age: 899
Too big! Try again.
Guess Alice's age: 78
Too small! Try again.
Guess Alice's age: 89
Congratulations! You guessed correctly.
Game over!
posted @ 2026-08-10 15:46  两块饼干  阅读(14)  评论(0)    收藏  举报