Python语法第五讲 流程控制

本文介绍了Python中的条件判断语句,包括if、if-else和if-elif-else结构,以及如何使用input()函数获取用户输入。此外,讲解了while循环的基本用法,包括break和continue语句的运用。还展示了使用循环控制实现的功能,如打印99乘法表和编写猜拳游戏。最后给出了几个编程练习,涉及水仙花数、质数判断及猜拳游戏的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6 流程控制

6.1 条件判断

6.1.1 条件判断语句(if语句)

  • if语句在执⾏时,会先对条件表达式进⾏求值判断,
  • 如果为True,则执⾏if后的语句
  • 如果为False,则不执⾏

在这里插入图片描述

  • 语法:if 条件表达式 :
    代码块
  • 代码块代码块中保存着⼀组代码,同⼀个代码块中的代码,要么都执⾏要么都不执⾏
  • 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
  • 代码块就是⼀种为代码分组的机制

6.1.2 input() 函数

  • 该函数⽤来获取⽤户的输⼊
  • input()调⽤后,程序会⽴即暂停,等待⽤户输⼊
  • ⽤户输⼊完内容以后,点击回⻋程序才会继续向下执⾏
  • ⽤户输⼊完成以后,其所输⼊的的内容会以返回值得形式返回
  • input() 函数接受一个标准输入数据,返回为 string 类型。
input("请输入:")

请输入是提示信息

6.1.3 if-else语句

  • 语法:
if 条件表达式 :
代码块
else :
代码块
  • 执⾏流程
    • if-else语句在执⾏时,先对if后的条件表达式进⾏求值判断
    • 如果为True,则执⾏if后的代码块
    • 如果为False,则执⾏else后的代码块
# 1. 定义布尔型变量 `has_ticket` 表示是否有车票
has_ticket = True
# 2. 定义整型变量 `knife_length` 表示刀的长度,单位:厘米
knife_length=int(input("请输入刀的长度:"))
# 3. 首先检查是否有车票,如果有,才允许进行 **安检**
if has_ticket:
    print("有车票,可以开始安检..")
# 4. 安检时,需要检查刀的长度,判断是否超过 20 厘米
    if knife_length>=20:
        print("不允许携带 %d 厘米长的刀上车" % knife_length)
        print("不允许上车")
    else:
        print("请上车")
#* 如果超过 20 厘米,提示刀的长度,不允许上车
#* 如果不超过 20 厘米,安检通过
# 5. 如果没有车票,不允许进门
else:
    print("您要先买票啊")

6.1.4 if-elif-else 语句

  • 语法结构
if 条件表达式1 :
代码块
elif 条件表达式2 :
代码块
elif 条件表达式3 :
代码块
........
else :
代码块
  • 执⾏流程
    • if-elif-else语句在执⾏时,会⾃上向下依次对条件表达式进⾏求值判断,
    • 如果表达式的结果为True,则执⾏当前代码块,然后语句结束
    • 如果表达式的结果为False,则继续向下判断,直到找到True为⽌
    • 如果所有的表达式都是False,则执⾏else后的代码块
    • elifelse 都必须和 if 联合使用,而不能单独使用
    • 可以将 ifelifelse 以及各自缩进的代码,看成一个 完整的代码块
  • if语句的关键字为:if – elif – else
  • 总结: if-elif-else中只会有⼀个代码块会执⾏
  • 由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
# if-elif-else语句一定会有且只有一个条件执行
value = 20000  #  ?
if value >= 30000:
    print('有钱任性')
elif  value >= 20000:
    print('有钱真好)
elif value >= 10000:
    print(''哥也月薪上万了')
elif value >= 5000:
    print('工资还说的过去')
elif value >= 2000:
    print('能养活自己了')
else:
    print('吃土我开心')

6.1.5 while 语句循环控制

  • 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环和 for循环
  • 语法:
while 条件表达式 :
代码块
else:
代码块

在这里插入图片描述

案例:

a = input("请输入字符串:")
print(a)
while len(a) <= 5:
    print("字符串长度是{}".format(len(a)), a)
    a = input("输入错误,请输入字符串:")
else:
    print("恭喜你输入正确", "字符串长度是{}".format(len(a)), a)
    print("逆序", a[::-1])
  • 循环嵌套
  • 你可以在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环, 反之,你可以在for循环中嵌入while循环。
i = 0
while i < 5:
    j = 0
    while j < 5:
        print('*', end='')
        j += 1
    print()
    i += 1

break和continue

  • break 可以⽤来⽴即退出循环语句,包括else语句

    • break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
    • break语句用在while和for循环中。
    • 如果使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
  • continue ⽤来跳过当次循环

    • Python continue 语句跳出本次循环,而break跳出整个循环。
    • continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
i = 0
while i < 5:
    i += 1
    if i == 2:
        break
        # continue
    print(i)
    # print(b)
else:  # while循环的后继语句会在while循环正常执行完毕之后继续执行
    print('循环正常执行完毕')
  • 延伸
  • 打印99乘法表
# 99乘法表
#代码一
row = 0
while row < 9:
    row += 1
    col = 0
    while col < row:
        col += 1
        print("{}*{}={}".format(col, row, col * row), end="\t")
    print()
    
#代码二
row = 1
while row <= 9:
    col = 1
    while col <= row:
        print("{}*{}={}".format(col, row, col * row), end="\t")
        col += 1
    print()
    row += 1

第五讲作业

1.求1000以内所有的⽔仙花数
2.获取⽤户输⼊的任意数,判断其是否是质数?
3.猜拳游戏:
出拳 玩家:⼿动输⼊ 电脑:随机输⼊
判断输赢: 玩家获胜 电脑获胜 平局

  • 作业1:
#方法一
for a in range(0, 9):
    for b in range(0, 9):
        for c in range(0, 9):
            i = a * 100 + b * 10 + c
            if a ** 3 + b ** 3 + c ** 3 == i and i > 100:
                print(i, "是水仙花数")
#方法二
for i in range(100, 1000):
    a = str(i)
    b = int(a[0])
    c = int(a[1])
    d = int(a[2])
    if i == b ** 3 + c ** 3 + d ** 3:
        print(i, "是水仙花数")
# 方法三:使用while
i = 100
while i <= 1000:
    a = str(i)
    b = int(a[0])
    c = int(a[1])
    d = int(a[2])
    if i == b ** 3 + c ** 3 + d ** 3:
        print(i)

    i += 1

# 方法四:
i = 100
while i < 1000:
    j = str(i)
    if int(j[0]) ** 3 + int(j[1]) ** 3 + int(j[2]) ** 3 == int(j):
        print(j)
    i += 1
  • 作业2
a = int(input("请输入任意一个数字:"))
if a > 1:
    for b in range(2, a):
        if a % b == 0:
            print("%s是合数" % a)
            break
    else:
        print("%s是质数" % a)
else:
    print("输入错误")
  • 作业3
import random

# | 1 | 石头
# | 2 | 剪刀
# | 3 | 布
# 1、石头1 胜 剪刀2
# 2、剪刀2 胜 布3
# 3、布3 胜 石头1
# 4、玩家=电脑 平局

while True:
    player = int(input("请输入1,2,3三个数中一个数:"))

    computer = random.randint(1, 3)

    if (player == 1 and computer == 2) or \
            (player == 2 and computer == 3) or \
            (player == 3 and computer == 1):
        print("玩家获胜")
    elif (player == 2 and computer == 1) or \
            (player == 3 and computer == 2) or \
            (player == 1 and computer == 3):
        print("电脑获胜")
    elif player == computer:
        print("咱心有灵犀,平局啦!")

    if player == 0:
        print("游戏停止")
        break
    print("玩家选择的拳头是%s -电脑出的拳是%s" % (player, computer))
    print("输入0游戏停止")

方法二:
while True:
    import random
    player = int(input('请输入1,2,3:'))
    computer = random.randint(1, 3)
    # list1 = [(1, 3), (2, 1), (3, 2)]
    if (player == 1 and computer == 3) or (player == 2 and computer == 1) or (player == 3 and computer == 2):
        print('玩家获胜')
    elif player == computer:
        print('平局')
    else:
        print('电脑获胜')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值