社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python基础--Day04--流程控制语句

小小的python学习社 • 1 周前 • 51 次点击  
资料已经打包好了,需要的关注公众号发送“111”领取

流程控制语句是计算机编程中用于控制程序执行流程的语句。它们允许根据条件来控制代码的执行顺序和逻辑,从而使程序能够根据不同的情况做出不同的决策。流程控制实现了更复杂和灵活的编程逻辑。

  • 顺序语句

    顺序语句是按照编写的顺序依次执行程序中的代码。代码会按照从上到下的顺序有且仅执行一次。

  • 分支语句

    根据条件的真假来选择性地执行不同的代码块。这使得程序能够根据不同的情况做出不同的响应。

  • 循环语句

    允许重复执行一段代码,以便处理大量的数据或重复的任务。循环语句可以用于多次执行相同或类似的代码块,从而实现重复操作的需求。

流程控制是编程中的基本概念之一,对于编写高效、可靠的程序至关重要。

一、 分支语句

1.1、双分支语句

双分支语句是一种编程结构,用于根据条件的真假选择不同的执行路径。它基于条件的结果,决定程序执行的部分。在许多编程语言中,双分支语句通常使用 if-else 语句来实现。

if 条件表达式:    # 条件表达式为True执行的语句块# pass 语句可以占位else:    # 条件表达式为False执行的语句块

其中,条件是一个表达式或逻辑判断,它的结果可以是 True(真)或 False(假)。

当条件为真时,执行代码块A,也称为 if 代码块;当条件为假时,执行代码块B,也称为 else 代码块。

双分支语句允许根据不同的条件结果执行不同的代码逻辑,从而实现程序的分支选择和条件判断。它是一种基本的控制流程结构,常用于处理二选一的情况。

# 案例1:获取用户年龄age = int(input("请输入您的年龄:"))
# 判断是否进入成年模式if age >= 18:    print("进入成年模式!")    print("欧美区")    print("日韩区")    print("国产区")else:    print("进入青少年模式!")    print("科幻冒险类")    print("益智早教类")    print("科普记录类")print("程序结束")
# 案例2:根据用户输入的成绩判断其等级。如果成绩大于等于60分,则输出"及格",否则输出"不及格"。score = float(input("请输入成绩:"))
if score >= 60:    print("及格")else:    print("不及格")
# 案例3: 编写一个程序,判断一个年份是否为闰年。如果是闰年,则输出"是闰年",否则输出"不是闰年"。闰年的判断条件是能够被4整除但不能被100整除,或者能够被400整除。year = int(input("请输入年份:"))
# print(year % 400 == 0 or (year % 4 == 0 and year % 100 != 0))is_run = year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)
if is_run:    print("是闰年")else:    print(f"{year}不是闰年")
# 案例4:编写一个程序,根据用户输入的三个数字,判断这三个数字是否能够构成一个等边三角形。如果能够构成等边三角形,则输出"能构成等边三角形",否则输出"不能构成等边三角形"。等边三角形的判断条件是三条边的长度相等。num01 = int(input("请输入一个数字:"))num02 = int(input("请输入一个数字:"))num03 = int(input("请输入一个数字:"))
# if num01 == num02 and num01 == num03if num01 == num02 == num03:    print("能构成等边三角形")else:    print("不能构成等边三角形")
# 案例5: 用户输入一个年龄,判断是否符合20-35age = int(input("请输入一个年龄:"))# if age > 20 and age < 35:if 20 < age 35:    print("符合招聘要求")else:    print("不符合招聘要求")
# 案例6: 输入一个数字,判断是否为偶数num = int(input("请输入一个数字:"))
if num % 2 == 0:    print("是偶数")else:    print("是奇数")

重点:冒号+缩紧:标识语句块

和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用代码缩进和冒号( : )来区分代码块之间的层次。

在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。

注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。

1.2、单分支语句

单分支语句只包含一个条件判断和一个对应的代码块。如果条件为真,执行代码块中的语句;如果条件为假,则直接跳过代码块。
# 示例:获取两个值中的较小值
# 版本1:双分支版本# 获取两个输入值num01 = int(input("num01:"))num02 = int(input("num02:"))
if num02 < num01:    print("较小值:", num02)else:    print("较小值:", num01)

# 版本2:单分支版本# 获取两个输入值num01 = int(input("num01:"))num02 = int(input("num02:"))
# 如果num1比较小,直接打印输出;如果num02比较小,那就交换值,把较小的给num01输出打印if num02 < num01:    num01, num02 = num02, num01
print("较小值:", num01)

1.3、多分支语句

多分支语句(if-elif-else语句)可用于在多个条件之间进行选择。

if condition1:    # 当条件1为真时执行的代码块elif condition2:    # 当条件2为真时执行的代码块elif condition3:    # 当条件3为真时执行的代码块...else:    # 当所有条件都为假时执行的代码块"""多分支语句语法
if 表达式1:    语句块1elif 表达式2:    语句块2elif 表达式3:    语句块3elif 表达式4:    语句块4elif 表达式5:    语句块5else:    语句块6备注:  以上是一条语句,多个判断选其一    1、上面的表达式1-5,只要有一个表达式成立,那么后面的语句都不在执行    例如:表达式1成立的同时表达式3也成立,那么只执行语句块1不会执行语句块3    2、如果上面的表达式1-5都不成立,那么就执行else语句块"""
案例1:成绩等级
案例1:根据用户输入的成绩判断其等级。如果成绩[90,100],则输出"优秀"如果成绩[80,90],则输出"良好"如果成绩[60,80],则输出"及格"如果成绩小于60,则输出"不及格"如果成绩小于0或大于100,则输出"成绩有误"

# 版本1score = float(input("请输入成绩:"))# if 90 <= score <= 100:    print("成绩优秀!")elif 80 <= score < 90:    print("成绩良好!")elif 60 <= score < 80:    print("成绩及格!")elif 0 <= score < 60:    print("成绩不及格!")else:    print("非法输入!")

# 版本2:score = float(input("请输入成绩:"))
if score > 100 or score < 0:    print("非法输入!")elif score >= 90:    print("成绩优秀!")elif score > 80:    print("成绩良好!")elif score >= 60:    print("成绩及格!")elif score > 0:    print("成绩不及格!")
案例2:BMI测试
# 示例:计算BMI并给出健康建议
# 获取用户输入的身高和体重height = float(input("请输入您的身高(单位:米):"))weight = float(input("请输入您的体重(单位:千克):"))
# 计算BMI        height ** 3  height的3次方bmi = weight / (height ** 2)  # height ** 2  表示:height *height 就是2次方,
# 根据BMI给出健康建议if bmi 18.5:    advice = f"您的BMI为 {bmi:.3} ,体重过轻,建议增加营养摄入。"  # bmi:.3  .3就是保留3位小数elif 18.5 <= bmi 24:    advice = f"您的BMI为 {bmi:.3},体重正常,继续保持健康的生活方式。"elif 24 <= bmi 28:    advice = f"您的BMI为 {bmi:.3},体重过重,建议适当控制饮食并增加运动。"else:    advice = f"您的BMI为 {bmi:.3},体重肥胖,建议减少高热量食物摄入并增加运动量。"
# 输出健康建议print(advice)
案例3:游戏场景选择
import random
"""#  场景:# (1)怪物房: 遇到了史莱姆,并打败了它,金币加5,经验加10!#  (2) 宝箱房: 你打开了宝箱,获得了钥匙#  (3) 陷阱房: 你触发了陷阱,受到了毒箭的伤害,血值减10#  (4) 商店:   你来到了商店,购买了药水,金币减5,血值加20
扩展:    随意从,列表中选择一个    room = random.choice(["怪物房", "宝箱房", "陷阱房", "商店"])    print("房间:", room)"""
coin = 100  # 金币exp = 100  # 经验blood = 100  # 血值chest = []  # 宝箱
room = input("请输入房间名:")
# 下面的所有if或elif都是一条语句,多选一,必须执行一个,执行任意一个其他都不会执行了所以就是一条语句if room == "怪物房":    print("遇到了史莱姆,并打败了它")    coin += 5    exp += 10elif room == "宝箱房":    print("你打开了宝箱,获得了钥匙")    chest.append("钥匙")    print("当前宝贝:", chest)elif room == "陷阱房":    print("你触发了陷阱,受到了毒箭的伤害")    blood -= 10elif room == "商店":    print("你来到了商店,购买了药水")    coin -= 5    blood += 20
print(f"""玩家信息:   金币:{coin}   经验值:{exp}   血值: {blood}""")
print("游戏结束")

1.4、分支嵌套

分支嵌套是指在一个分支语句内部嵌套另一个分支语句。

案例1:

age = int(input("年龄:"))
if age > 18:     print("大人电影!")
    choice = input("""       1. 日韩区       2. 欧美区       3. 国产区     """)
    if choice == "1":        print("《熔炉》")        print("《千与千寻》")        print("《龙猫》")        print("《天空之城》")    elif choice == "2":        print("《肖申克的救赎》")        print("《当幸福来敲门》")        print("《阿甘正传》")        print("《星际穿越》")    elif choice == "3":        print("《霸王别姬》")        print("《大话西游》")        print("《让子弹飞》")        print("《无间道》")    else:        print("输入有误!")    print("观看大人电影结束!")
else:    print("少儿电影")    print("科幻冒险类")    print("益智早教类")    print("科普记录类")
print("程序结束")
案例2:
""" 勇士与地下城的场景续写:(1)怪物房: 遇到了史莱姆                1. 选择攻击,战胜史莱姆,则经验加20,金币加20,失败则经验减20,金币减20,血值减20,成功的概率为50%。                2. 选择逃跑,则金币减20 (2) 宝箱房: 你打开了宝箱,获得了钥匙 (3) 陷阱房: 你触发了陷阱,受到了毒箭的伤害,血值减10 (4) 商店:   你来到了商店,打印当前血值和金币,一个金币买一个药水对应10个血值,引导是否购买药水                1. 购买,引导购买几个金币的药水,并完成减金币和增血值                2. 不购买,打印退出商店
"""import random
coin = 100exp = 100blood = 100chest = []
room = input("请输入房间名:")
if room == "怪物房":    print("遇到了史莱姆")    choice = input("【1.攻击/2.逃跑】")    if choice == "1":        # 选择攻击        print("选择干史莱姆!")        is_success = random.choice([100200])  # 100:成功  200:失败        if is_success == 100:            print("战胜史莱姆!")            coin += 20            exp += 20        else:            print("没打过史莱姆!")            coin -= 20            exp -= 20            blood -= 20    elif choice == "2":        # 逃跑的逻辑        print("逃跑ing")        coin -= 20    else:        print("无效输入!")
    print("离开怪物房")elif room == "宝箱房":    print("你打开了宝箱,获得了钥匙")    chest.append("钥匙")    print("当前宝贝:", chest)elif room == "陷阱房":    print("你触发了陷阱,受到了毒箭的伤害")    blood -= 10elif room == "商店":     print(f"玩家的金币:{coin},血值:{blood}")    print("一个金币买一个药水对应10个血值")    is_buy = input("是否购买药水【Y/N】")    if is_buy == "Y":        num = int(input("购买几瓶药水?"))        coin -= 1 * num        blood += 10 * num        print(f"当前玩家的金币:{coin},血值:{blood}")    elif is_buy == "N":        print("退出商店!")    else:        print("无效输入!")
print(f"""玩家信息:   金币:{coin}   经验值:{exp}   血值: {blood}""")
print("游戏结束")

 二、循环语句

预备知识:

PyCharm提供了丰富的功能来帮助开发者编写、调试和运行 Python 代码。其中,PyCharm 的 Debug 模式是一种强大的调试工具,可以帮助开发者在代码执行过程中逐行跟踪和分析程序的行为。以下是关于 PyCharm Debug 模式的介绍:

  1. 设置断点:在需要调试的代码行上设置断点,断点是程序的一个暂停点,当程序执行到断点时会暂停执行,允许开发者逐行检查代码。

  2. 启动 Debug 模式:在 PyCharm 中,可以通过点击工具栏上的 "Debug" 按钮来启动 Debug 模式,或者使用快捷键(通常是 F9)。

  3. 逐行执行:在 Debug 模式下,可以使用调试工具栏上的按钮(如「Step Over」、「Step Into」和「Step Out」)逐行执行代码。Step Over 会执行当前行并跳转到下一行,Step Into 会进入函数调用并逐行执行函数内部代码,Step Out 会执行完当前函数并跳出到调用该函数的位置。

  4. 变量监视:在 Debug 模式下,可以查看变量的值和状态。在调试工具栏的「Variables」窗口中,可以看到当前作在 PyCharm 中,Debug 模式是一种强大的调试工具,可以帮助开发者在代码执行过程中逐行跟踪和分析程序的行为。

image

循环语句

循环语句是编程中的一种控制结构,用于重复执行特定的代码块,直到满足特定的条件为止。它允许程序根据需要多次执行相同或类似的操作,从而简化重复的任务。

2.1、while循环

while循环用于在条件为真的情况下重复执行一段代码,直到条件变为假为止。以下是while循环的语法:

while条件:
    循环体

在执行while循环时,程序会先检查条件是否为真。如果条件为真,就执行循环体中的代码,然后再次检查条件。如果条件仍为真,就再次执行循环体中的代码,以此类推,直到条件变为假为止。

# (1) 无限循环while True:    print("hello world")
# (2) 有限循环(三要素循环)# 有限循环方式1# 案例1: 打印10次hello worldcount = 0                   # 1、初始变量while count 10:           # 2、判断表达式    print("hello world")    count += 1              # 3、步进语句 count = count+1
#有限循环方式2count = 100  # 初始语句while count > 0:  # 判断条件    print("count:::", count)    count -= 1  # 步进语句

2.2、循环案例

案例1:计算1-100的和

"""# 准备:# 假设有一个变量s的初始值为0,将s增加5次,每次增加值分别为1,2,3,4,5,然后打印s的值。"""# 计算1-100的和
count = 1s = 0while count <= 1000:    # 逻辑代码块开始    s += count    # 逻辑代码块结束    count += 1
print(s)
案例2:验证码案例
 string类封装了常用的字符串如下:
image
# 假设有一个变量s的初始值为"",将s拼接5次,每次增加值分别为"A""B""C",然后打印s的值。


    
s = ""s += "A"s += "B"s += "C"print(s)
# 假设有一个变量s的初始值为"",将s拼接5次,每次增加值分别为"A""B""C",然后打印s的值。import randomimport string
#print(string.digits+string.ascii_lowercase+string.ascii_uppercase)print(string.digits+string.ascii_letters)
# 随机生成10个字符的字符串count = 0s = ""while count 10:    # 逻辑代码块开始    char = random.choice(string.digits + string.ascii_letters)    # print(char)    s += char    # 逻辑代码块结束    count += 1
print("s:::", s)   # s::: oJ9iGMiqPF

2.3、for循环

for循环用于对一个容器对象(如字符串、列表、元组等)中的元素进行遍历和操作,直到所有元素都被遍历为止。以下是for循环的语法:

for 变量 in 容器对象(字符串,列表,字典等):   循环体
for i in "hello world":    # print("yuan")    print(i)

在执行for循环时,程序会依次将序列中的每个元素赋值给变量,并执行循环体中的代码,直到序列中的所有元素都被遍历完为止。

在 Python 中,range() 函数用于生成一个整数序列,它常用于循环和迭代操作。

range(stop) 
range(start, stop, step)

参数解释:

  • start(可选):序列的起始值,默认为 0。

  • stop:序列的结束值(不包含在序列中)。

  • step(可选):序列中相邻两个值之间的步长,默认为 1。

for i in range(10):  # 循环10次


    
    print("yuan")
# 基于for循环实现1+100的和的计算    s = 0for i in range(1101):  # 循环次数    s += iprint(s)    # 5050

2.4、嵌套语句

案例1:打印出从 0 到 99 中能被 13 整除的所有数字。

for i in range(100): 
   if i % 13 == 0: 
       print(i)

案例2:打印出从 1 到 100 的所有整数,但将整除 3 的数字打印为 "Fizz",整除 5 的数字打印为 "Buzz",同时整除 3 和 5 的数字打印为 "FizzBuzz"。

# 案例3:# 打印出从 1 到 100 的所有整数,# 将整除 3 的数字打印为 "Fizz",# 整除  5 的数字打印为 "Buzz",# 同时整除  3 和 5 的数字打印为 "FizzBuzz"。for i in range(1101):
    if i % 3 == 0 and i % 5 == 0:        print(f"{i}:FizzBuzz")    elif i % 3 == 0:        print(f"{i}:Fizz")    elif i % 5 == 0:        print(f"{i}:Buzz")    else:        print(f"{i}:各种情况都不符合!")
    print(f"完成数字{i}判断!")
案例3:循环嵌套分支
# (1) 无限循环嵌套import random
coin = 100exp = 100blood = 100chest = []
while True:    room = input("请输入房间名:")    if room == "怪物房":        print("遇到了史莱姆")        choice = input("【1.攻击/2.逃跑】")        if  choice == "1":            # 选择攻击            print("选择干史莱姆!")            is_success = random.choice([100200])  # 100:成功  200:失败            if is_success == 100:                print("战胜史莱姆!")                coin += 20                exp += 20            else:                print("没打过史莱姆!")                coin -= 20                exp -= 20                blood -= 20        elif choice == "2":            # 逃跑的逻辑            print("逃跑ing")            coin -= 20        else:            print("无效输入!")
        print("离开怪物房")    elif room == "宝箱房":        print("你打开了宝箱,获得了钥匙")        chest.append("钥匙")        print("当前宝贝:", chest)    elif room == "陷阱房":        print("你触发了陷阱,受到了毒箭的伤害")        blood -= 10    elif room == "商店":        print(f"玩家的金币:{coin},血值:{blood}")        print("一个金币买一个药水对应10个血值")        is_buy = input("是否购买药水【Y/N】")        if is_buy == "Y":            num = int(input("购买几瓶药水?"))            coin -= 1 * num            blood += 10 * num            print(f"当前玩家的金币:{coin},血值:{blood}")        elif is_buy == "N":            print("退出商店!")        else:            print("无效输入!")    print(f"""    玩家信息:       金币:{coin}       经验值:{exp}       血值: {blood}    """)
print("游戏结束")
####################################################################################

import random
coin = 100exp = 100blood = 100chest = []
for i in range(3):    room = input("请输入房间名:")    if room == "怪物房":        print("遇到了史莱姆")        choice = input("【1.攻击/2.逃跑】")        if choice == "1":            # 选择攻击            print("选择干史莱姆!")            is_success = random.choice([100200])  # 100:成功  200:失败            if is_success == 100:                print("战胜史莱姆!")                coin += 20                exp += 20            else:                print("没打过史莱姆!")                coin -= 20                exp -= 20                blood -= 20        elif choice == "2":            # 逃跑的逻辑             print("逃跑ing")            coin -= 20        else:            print("无效输入!")
        print("离开怪物房")    elif room == "宝箱房":        print("你打开了宝箱,获得了钥匙")        chest.append("钥匙")        print("当前宝贝:", chest)    elif room == "陷阱房":        print("你触发了陷阱,受到了毒箭的伤害")        blood -= 10    elif room == "商店":        print(f"玩家的金币:{coin},血值:{blood}")        print("一个金币买一个药水对应10个血值")        is_buy = input("是否购买药水【Y/N】")        if is_buy == "Y":            num = int(input("购买几瓶药水?"))            coin -= 1 * num            blood += 10 * num            print(f"当前玩家的金币:{coin},血值:{blood}")        elif is_buy == "N":            print("退出商店!")        else:            print("无效输入!")    print(f"""       玩家信息:          金币:{coin}          经验值:{exp}          血值: {blood}       """)
print("游戏结束")
案例4:打印扑克牌
# 案例1:poke_types = ['♥️''♦️''♠️''♣️']poke_nums = [2345678910'J''Q''K''A']
for pn in poke_nums:    # print(pn)    # print(poke_types)    for pt in poke_types:        print(f"{pt}{pn}")

2.5、退出循环

while是条件循环,条件为False时退出循环,for循环是遍历循环,遍历完成则退出,这都属于正常退出循环,如果想非正常退出循环,分为强制退出当次循环和退出整个循环,分别使用关键字continuebreak来实现

  • break退出整个循环

# (1) 退出while循环while True:
    userInput = input("请输入一个数字(输入q退出):")    # 选择退出机制    if userInput.upper() == "Q":        break
    number = int(userInput)    square = number ** 2    print(f"{number} 的平方是 {square}")
print("程序结束")

# (2) 退出 for循环# 查找1-100中第一个能整除13的非零偶数for i in range(10):
    userInput = input("请输入一个数字(输入q退出):")    # 选择退出机制    if userInput.upper() == "Q":        break
    number = int(userInput)    square = number ** 2    print(f"{number} 的平方是 {square}")
print("程序结束")
#  如果是循环嵌套,break强制退出所在的那层循环,不是退出多层循环
  • continue退出当次循环

# 打印1-100中能整除13的数for i in range(100):    if i % 13 != 0:        continue    print("1-获取i值:", i)
for i in range(100):    if i % 13 == 0:        print("2-获取i值:", i)"""    1-获取i值: 0    1-获取i值: 13    1-获取i值: 26    1-获取i值: 39    1-获取i值: 52    1-获取i值: 65    1-获取i值: 78    1-获取i值: 91    2-获取i值: 0    2-获取i值: 13    2-获取i值: 26    2-获取i值: 39    2-获取i值: 52    2-获取i值: 65    2-获取i值: 78    2-获取i值: 91"""
资料已经打包好了,需要的关注公众号发送“111”领取
 结语 

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python学习视频合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

资料获取方式:↓↓↓↓
1.关注下方公众号↓↓↓↓,在后台发送:111 即可免费领取

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/185860
 
51 次点击