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

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

  • 顺序语句

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

  • 分支语句

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

  • 循环语句

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

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

一、 分支语句

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 == num03
if num01 == num02 == num03:print("能构成等边三角形")
else:print("不能构成等边三角形")# 案例5: 用户输入一个年龄,判断是否符合20-35
age = 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, num01print("较小值:", num01)

1.3、多分支语句

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

if condition1:# 当条件1为真时执行的代码块
elif condition2:# 当条件2为真时执行的代码块
elif condition3:# 当条件3为真时执行的代码块
...
else:# 当所有条件都为假时执行的代码块"""
多分支语句语法if 表达式1:语句块1
elif 表达式2:语句块2
elif 表达式3:语句块3
elif 表达式4:语句块4
elif 表达式5:语句块5
else:语句块6
备注:  以上是一条语句,多个判断选其一1、上面的表达式1-5,只要有一个表达式成立,那么后面的语句都不在执行例如:表达式1成立的同时表达式3也成立,那么只执行语句块1不会执行语句块32、如果上面的表达式1-5都不成立,那么就执行else语句块
"""

案例1:成绩等级

# 案例1:根据用户输入的成绩判断其等级。
# 如果成绩[90,100],则输出"优秀"
# 如果成绩[80,90],则输出"良好"
# 如果成绩[60,80],则输出"及格"
# 如果成绩小于60,则输出"不及格"
# 如果成绩小于0或大于100,则输出"成绩有误"# 版本1
# score = 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 += 5exp += 10
elif room == "宝箱房":print("你打开了宝箱,获得了钥匙")chest.append("钥匙")print("当前宝贝:", chest)
elif room == "陷阱房":print("你触发了陷阱,受到了毒箭的伤害")blood -= 10
elif room == "商店":print("你来到了商店,购买了药水")coin -= 5blood += 20print(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 randomcoin = 100
exp = 100
blood = 100
chest = []room = input("请输入房间名:")if room == "怪物房":print("遇到了史莱姆")choice = input("【1.攻击/2.逃跑】")if choice == "1":# 选择攻击print("选择干史莱姆!")is_success = random.choice([100, 200])  # 100:成功  200:失败if is_success == 100:print("战胜史莱姆!")coin += 20exp += 20else:print("没打过史莱姆!")coin -= 20exp -= 20blood -= 20elif choice == "2":# 逃跑的逻辑print("逃跑ing")coin -= 20else: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 * numblood += 10 * numprint(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 world
count = 0                   # 1、初始变量
while count < 10:           # 2、判断表达式print("hello world")count += 1              # 3、步进语句 count = count+1#有限循环方式2
count = 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 = 1
s = 0
while count <= 1000:# 逻辑代码块开始s += count# 逻辑代码块结束count += 1print(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 random
import string#
# print(string.digits+string.ascii_lowercase+string.ascii_uppercase)
# print(string.digits+string.ascii_letters)# 随机生成10个字符的字符串
count = 0
s = ""
while count < 10:# 逻辑代码块开始char = random.choice(string.digits + string.ascii_letters)# print(char)s += char# 逻辑代码块结束count += 1print("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 = 0
for i in range(1, 101):  # 循环次数s += i
print(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(1, 101):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 randomcoin = 100
exp = 100
blood = 100
chest = []while True:room = input("请输入房间名:")if room == "怪物房":print("遇到了史莱姆")choice = input("【1.攻击/2.逃跑】")if choice == "1":# 选择攻击print("选择干史莱姆!")is_success = random.choice([100, 200])  # 100:成功  200:失败if is_success == 100:print("战胜史莱姆!")coin += 20exp += 20else:print("没打过史莱姆!")coin -= 20exp -= 20blood -= 20elif choice == "2":# 逃跑的逻辑print("逃跑ing")coin -= 20else: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 * numblood += 10 * numprint(f"当前玩家的金币:{coin},血值:{blood}")elif is_buy == "N":print("退出商店!")else:print("无效输入!")print(f"""玩家信息:金币:{coin}经验值:{exp}血值: {blood}""")print("游戏结束")####################################################################################import randomcoin = 100
exp = 100
blood = 100
chest = []for i in range(3):room = input("请输入房间名:")if room == "怪物房":print("遇到了史莱姆")choice = input("【1.攻击/2.逃跑】")if choice == "1":# 选择攻击print("选择干史莱姆!")is_success = random.choice([100, 200])  # 100:成功  200:失败if is_success == 100:print("战胜史莱姆!")coin += 20exp += 20else:print("没打过史莱姆!")coin -= 20exp -= 20blood -= 20elif choice == "2":# 逃跑的逻辑print("逃跑ing")coin -= 20else: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 * numblood += 10 * numprint(f"当前玩家的金币:{coin},血值:{blood}")elif is_buy == "N":print("退出商店!")else:print("无效输入!")print(f"""玩家信息:金币:{coin}经验值:{exp}血值: {blood}""")print("游戏结束")

案例4:打印扑克牌

# 案例1:
poke_types = ['♥️', '♦️', '♠️', '♣️']
poke_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, '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":breaknumber = int(userInput)square = number ** 2print(f"{number} 的平方是 {square}")print("程序结束")# (2) 退出 for循环
# 查找1-100中第一个能整除13的非零偶数
for i in range(10):userInput = input("请输入一个数字(输入q退出):")# 选择退出机制if userInput.upper() == "Q":breaknumber = int(userInput)square = number ** 2print(f"{number} 的平方是 {square}")print("程序结束")#  如果是循环嵌套,break强制退出所在的那层循环,不是退出多层循环
  • continue退出当次循环

# 打印1-100中能整除13的数
for i in range(100):if i % 13 != 0:continueprint("1-获取i值:", i)for i in range(100):if i % 13 == 0:print("2-获取i值:", i)
"""1-获取i值: 01-获取i值: 131-获取i值: 261-获取i值: 391-获取i值: 521-获取i值: 651-获取i值: 781-获取i值: 912-获取i值: 02-获取i值: 132-获取i值: 262-获取i值: 392-获取i值: 522-获取i值: 652-获取i值: 782-获取i值: 91
"""

三、 今日作业

  1. 编写一个程序,判断一个字符是否为元音字母(a、e、i、o、u,包括小写和大写)。如果是元音字母,则输出"是元音字母",否则输出"不是元音字母"。

  2. 统计元音字母:编写一个程序,接受用户输入的一段文本,统计其中元音字母(a、e、i、o、u)的个数,并输出结果。

  3. 计算1-2+3-4+......-1000最终的结果,能整除13的数不参与计算

  4. 身份证号码的倒数第二位数字是奇数,表示性别为男性,否则为女性,引导用户输入身份证号,先判断是否为18位,再判断性别。

  5. 计算初始本金为1万,年利率为0.0325的情况下,需要多少年才能将本金和利息翻倍,即本金和利息的总和达到原来的两倍。

  6. 编写一个程序,生成斐波那契数列的第20个数字(斐波那契数列是指从0和1开始,后面的每一项都是前两项的和)

    0 1 1 2 3 5 8 ....
  7. 编写一个程序,接受用户输入的一个整数,判断该数是否是素数(只能被1和自身整除的数)。注意,素数的定义是大于1的自然数,只能被1和自身整除,没有其他的正因数。

  8. 猜数字游戏

    1.首先,程序使用random.randint函数产生一个1~10之间的随机数。
    2.然后,程序通过for循环提示玩家输入一个猜测的数字,玩家可以输入一个1~10之间的整数。
    3.如果玩家猜对了数字,程序输出恭喜玩家的信息并结束游戏;如果玩家猜错了,程序会根据玩家输入的数字与随机数之间的大小关系来提示玩家是否猜对,并在每次猜错后告诉玩家还剩下几次机会。
    4.如果玩家在三次机会内猜对了数字,程序输出恭喜玩家的信息并结束游戏;否则程序输出很遗憾的信息并结束游戏。
  9. 分支嵌套

    在选座购票中扩写,引导用户输入【普通票/学生票/老年票】,然后分支判断。

    print("欢迎来到电影订票系统!")
    print("请选择您要进行的操作:")
    print("1. 查询电影场次")
    print("2. 选座购票")
    print("3. 查看订单信息")
    ​
    choice = int(input("请输入您的选择(1-3):"))
    ​
    if choice == 1:print("正在查询电影场次...")# 执行查询电影场次的代码
    elif choice == 2:print("正在选座购票...")
    ​
    elif choice == 3:print("正在查看订单信息...")# 执行查看订单信息的代码
    else:print("无效的选择!请重新运行程序并输入有效的选项。")
    ​
  10. 打印一个nxn的矩阵,每个元素的值等于其所在行数和列数之和。

    // 比如4*4矩阵
    ​
    2   3   4   5   
    3   4   5   6   
    4   5   6   7   
    5   6   7   8
  11. 打印一个如下的九九乘法表 

image-20240117122014975

"""
1. 编写一个程序,判断一个字符是否为元音字母(a、e、i、o、u,包括小写和大写)。如果是元音字母,
则输出"是元音字母",否则输出"不是元音字母"。
"""
char = input("请输入一个字母")
if char.lower() in "aeiou":print("是元音字母")
else:print("不是元音字母")"""
2. 统计元音字母:编写一个程序,接受用户输入的一段文本,统计其中元音字母(a、e、i、o、u)的个数,并输出结果。
"""
data = input("请输入一段文本:")
count = 0
for char in data:if char.lower() in "aeiou":count += 1
print("元音字母出现次数:", count)"""
3. 计算1-2+3-4+......-1000最终的结果,能整除13的数不参与计算
"""
ret = 0
for i in range(1001):# 如果能整除13就不参与计算if i % 13 == 0:continueif i % 2 == 0:ret -= i  # ret = ret - ielse:ret += i  # ret = ret + iprint(ret)"""
4. 身份证号码的倒数第二位数字是奇数,表示性别为男性,否则为女性,引导用户输入身份证号,先判断是否为18位,再判断性别。
"""
uid = input("请输入您的身份证号码:")
if len(uid) == 18:gender_val = int(uid[-2])if gender_val % 2 == 0:print("女性")else:print("男性")"""
5. 计算初始本金为1万,年利率为0.0325的情况下,需要多少年才能将本金和利息翻倍,即本金和利息的总和达到原来的两倍。
base = 10000
rate = 0.0325
total = base   # 回收的钱
存一年后:total = 10000+ 10000*0.0325  # 10325
存两年后:total = 10325+ 10325*0.0325  # 10660
存三年后:total = 10660+ 10660*0.0325  #
存n年后: total = total+ total * rate
"""
base = 10000
rate = 0.0325
total = baseyear = 0
while total < 2 * base:total = total + total * rateprint(total)year += 1
print(year)"""
(6) 编写一个程序,生成斐波那契数列的第20个数字(斐波那契数列是指从0和1开始,后面的每一项都是前两项的和)
"""
pre = 0
current = 1
for _ in range(18):  # _ 因为i就没用到,所以用_代替,因为是第20个数字,所以循环18次,之前包含了pre=0和current=1next_num = pre + currentprint("next:", next_num)pre = currentcurrent = next_num# (7) 编写一个程序,接受用户输入的一个整数,判断该数是否是素数(只能被1和自身整除的数)。注意,素数的定义是大于1的自然数,只能被1和自身整除,没有其他的正因数。
# 方案1  0 和1 不是素数
num = int(input("请输入一个大于1的整数:"))
flag = True   # 变量标志位  用来判断循环是否是正常退出
for i in range(2, num):if num % i == 0:flag = Falsebreak
if flag:print(f"{num}是素数")
else:print(f"{num}不是素数")# 扩展----方案2: for-else  必须要有if..break
"""
for item in sequence:# 迭代操作if condition:# 满足条件时执行的操作break
else:# 在循环结束后执行的操作
"""
num = int(input("请输入一个大于1的整数:"))for i in range(2, num):if num % i == 0:print(f"{num}不是素数")break
else:print(f"{num}是素数")# break退出,走了if判断的执行操作,走了break  就不会在执行else  如果没走if..break 就会走else
# if判断成功了一套逻辑,if判断没成功,另外一套逻辑# (8) 猜数字游戏
"""1.首先,程序使用random.randint函数产生一个1~10之间的随机数。
2.然后,程序通过for循环提示玩家输入一个猜测的数字,玩家可以输入一个1~10之间的整数。
3.如果玩家猜对了数字,程序输出恭喜玩家的信息并结束游戏;如果玩家猜错了,程序会根据玩家输入的数字与随机数之间的大小关系来提示玩家是否猜对,并在每次猜错后告诉玩家还剩下几次机会。
4.如果玩家在三次机会内猜对了数字,程序输出恭喜玩家的信息并结束游戏;否则程序输出很遗憾的信息并结束游戏。"""
import random# 案例1:
secret_num = random.randint(1, 10)for i in range(3):guess_num = int(input("请输入一个数字,范围【1-10】:"))# 判断if guess_num > secret_num:print("猜大了")elif guess_num < secret_num:print("猜小了")else:print("恭喜您,猜对了,数字正是", guess_num)break
else:   # 弥补不到三次就猜中的问题  走了break 就不走该else,没走break并且三次机会用完了就会走该elseprint("很遗憾,三次机会已经用完!")# 案例2:
secret_num = random.randint(1, 10)
max_guesses = 3
for i in range(1, max_guesses + 1):guess_num = int(input("请输入一个数字,范围【1-10】:"))# 判断if guess_num > secret_num:print("猜大了")elif guess_num < secret_num:print("猜小了")else:print("恭喜您,猜对了,数字正是", guess_num)break# 提示remaining_guesses = max_guesses - iif remaining_guesses >0:print(f"您还剩下{remaining_guesses}次机会,请珍惜!")else:print("很遗憾,三次机会已经用完!")break# (9)
print("欢迎来到电影订票系统!")
print("请选择您要进行的操作:")
print("1. 查询电影场次")
print("2. 选座购票")
print("3. 查看订单信息")choice = int(input("请输入您的选择(1-3):"))if choice == 1:print("正在查询电影场次...")# 执行查询电影场次的代码
elif choice == 2:print("正在选座购票...")# 普通票/学生票/老年票ticket_type = input("""1. 学生票2. 老年票3. 普通票""")if ticket_type == "1":print("正在购买学生票")elif ticket_type == "2":print("正在购买老年票")elif ticket_type == "3":print("正在购买普通票")
elif choice == 3:print("正在查看订单信息...")# 执行查看订单信息的代码
else:print("无效的选择!请重新运行程序并输入有效的选项。")# (10)打印一个nxn的矩阵,每个元素的值等于其所在行数和列数之和。
n = 5
for r in range(1, n + 1):for c in range(1, n + 1):print(f"{r + c}\t", end="")print()# (11)九九乘法表
for r in range(1, 10):for c in range(1, r + 1):print(f"{c}*{r}={r * c}\t", end="")print()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91194.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【同济大学】双速率自动驾驶架构LeAD:端到端+LLM,CARLA实测93%路线完成率,性能SOTA!

近年来&#xff0c;随着端到端的技术快速发展将自动驾驶带到了一个新高度&#xff0c;并且取得了非常亮眼的成绩。由于感知限制和极端长尾场景下训练数据覆盖不足&#xff0c;模型在高密度复杂交通场景下和不规则交通情况下的处理能力不足&#xff0c;导致在开放道路上大规模部…

github与git新手教程(快速访问github)

0 序言 作为一个开发者&#xff0c;你必须知道github和git是什么&#xff0c;怎么使用。 github是一个存储代码等资源的远程仓库&#xff0c;一个大型项目往往需要很多人共同协作开发&#xff0c;而大家如何协同开发的进度与分工等要求需要有一个统一开放保存代码的平台。git…

Windows环境下安装Python和PyCharm

可以只安装PyCharm吗&#xff1f;不可以&#xff01;&#xff01;&#xff01; 开发Python应用程序需要同时安装Python和PyCharm。Python是一种编程语言&#xff0c;PyCharm是一个专门为Python开发设计的集成开发环境&#xff0c;提供丰富的功能以简化编码过程。 一、前期准备…

Qt 嵌入式系统资源管理

在嵌入式系统中&#xff0c;资源&#xff08;CPU、内存、存储、网络等&#xff09;通常非常有限&#xff0c;因此高效的资源管理对 Qt 应用的稳定性和性能至关重要。本文从内存优化、CPU 调度、存储管理到电源控制&#xff0c;全面解析 Qt 嵌入式系统资源管理的关键技术。 一、…

小杰数据结构(one day)——心若安,便是晴天;心若乱,便是阴天。

1.数据结构计算机存储、组织数据的方式&#xff1b;有特定关系的数据元素集合&#xff1b;研究数据的逻辑结构、物理结构&#xff08;真实存在&#xff09;和对应的算法&#xff1b;新结构仍保持原结构类型&#xff1b;选择更高的运行或存储效率的数据结构。逻辑结构——面向问…

力扣面试150(44/150)

7.30 155. 最小栈 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶…

Linux实战:从零搭建基于LNMP+NFS+DNS的WordPress博客系统

前言 在数字化时代&#xff0c;拥有一个个人博客是技术爱好者展示成果、分享经验的重要方式。本文将带您从零开始&#xff0c;在Linux环境下通过两台服务器协作&#xff0c;搭建一个功能完整的WordPress博客系统。我们将整合LNMP架构、NFS文件共享和DNS域名解析服务&#xff0c…

Apache Ignite 的对等类加载(Peer Class Loading, P2P Class Loading)机制

这段内容是关于 Apache Ignite 的“对等类加载”&#xff08;Peer Class Loading, P2P Class Loading&#xff09;机制的详细说明。这是 Ignite 为了简化开发而设计的一个非常强大的功能&#xff0c;但同时也存在一些安全和性能上的考量。 下面我将用通俗易懂的语言 结构化解…

预过滤环境光贴图制作教程:第四阶段 - Lambert 无权重预过滤(Stage 3)

在完成高光反射的 GGX 预过滤后,我们还需要处理环境光的漫反射部分。本阶段(Stage 3)将基于 Lambert 分布对环境贴图进行无权重预过滤,生成用于漫反射计算的环境数据。与高光反射的方向性不同,漫反射是光线在粗糙表面的均匀散射,因此需要用更适合均匀分布的 Lambert 模型…

Spring与SpringBoot:从手动挡到自动挡的Java开发进化论

大家好&#xff01;我是程序员良辰&#xff0c;今天我们来聊聊Java开发界的两位"重量级选手"&#xff1a;Spring 和 SpringBoot。它们之间的关系就像手动挡汽车和自动挡汽车——一个给你完全的控制权但操作复杂&#xff0c;一个让你轻松上路但保留了切换手动模式的能…

1.4.Vue 的模板事件

Vue 的模板事件1. 最常见和推荐的做法。将复杂的逻辑封装在 methods 中。<!-- ✅ 正确&#xff1a;调用 methods 中的方法 --> <button click"handleClick">点击我</button>new Vue({methods: {handleClick(event) {// 这里可以写任意语句if (this…

SQLite 子查询详解

SQLite 子查询详解 引言 SQLite 是一种轻量级的数据库&#xff0c;以其简单、易用和跨平台而著称。在数据库查询中&#xff0c;子查询是一个非常重要的概念&#xff0c;它允许我们在查询中使用查询结果。本文将详细讲解 SQLite 中的子查询&#xff0c;包括其定义、用法以及在实…

可以组成网络的服务器 - 华为OD统一考试(JavaScript 题解)

题目描述 在一个机房中,服务器的位置标识在n*m的整数矩阵网格中,1表示单元格上有服务器,0表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网,请你统计机房中最大的局域网包含的服务器个数。 输入描述 第一行输入两个正整数,…

redis,MongoDB等未授权访问靶场复现

redis未授权访问在docker中启动vulhub对应的靶场目录&#xff1a;cd /vulhub-master/redis/4-unacc在kali上安装redis程序进行服务连接安装redis apt-get install redis redis链接 redis-cli -h IP -p 端口输入info可以查看信息接下来我们使用redis-rogue-server来获取命令执行…

设计模式:代理模式 Proxy

目录问题解决方案结构代码代理是一种结构型设计模式&#xff0c;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许在将请求提交给对象前后进行一些处理。 问题 为什么要控制对于某个对象的访问呢&#xff1f; 举个例子&#xff1a; 有这样一…

Linux零基础Shell教学全集(可用于日常查询语句,目录清晰,内容详细)(自学尚硅谷B站shell课程后的万字学习笔记,附课程链接)

此文章为学习了 尚硅谷B站课程 后的学习笔记 【尚硅谷】Shell脚本从入门到实战_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hW41167NW/?spm_id_from333.337.search-card.all.click&vd_source68e0bbe20c8b1102b59ced40f67db628注意&#xff1a;需要先学Linux基础…

GitLab 中的分支和标签的定义及操作

&#xff08;一&#xff09;GitLab 中的分支和标签的定义及操作 1. 分支&#xff08;Branch&#xff09; 定义&#xff1a; 分支是代码仓库中的独立开发路径&#xff0c;允许你在不影响主线&#xff08;通常是 main 或 master 分支&#xff09;的情况下&#xff0c;进行实验、开…

第2章 cmd命令基础:常用基础命令(3)

Hi~ 我是李小咖&#xff0c;主要从事网络安全技术开发和研究。 本文取自《李小咖网安技术库》&#xff0c;欢迎一起交流学习&#x1fae1;&#xff1a;https://imbyter.com 本节介绍的命令有显示系统信息&#xff08;systeminfo&#xff09;、启动指定程序&#xff08;start&am…

RabbitMQ 发送方确认的两大工具 (With Spring Boot)

核心概念解析 发布者确认机制的核心思想是&#xff1a;将消息投递的可靠性从“尽力而为”提升为“契约保证”。生产者不再是“发后不理”&#xff0c;而是与 Broker 建立一个双向的沟通渠道。 在 Spring AMQP 的封装下&#xff0c;这个机制主要由两个回调接口实现&#xff1a; …

KONG API Gateway中的核心概念

在使用Kong API Gateway&#xff08;API网关&#xff09;时&#xff0c;理解其核心概念是掌握其工作原理的基础。这些概念既体现了Kong的设计哲学&#xff0c;也决定了它如何适配复杂的API管理场景&#xff08;如微服务、多团队协作等&#xff09;。本文将系统梳理Kong的核心概…