当前位置: 首页 > news >正文

python入门(4)流程控制语句

1. 条件判断语句

条件控制语句用于根据条件来决定程序的执行路径。在Python中,常见的条件控制语句有以下几种:

(1)if语句:用于执行满足条件的代码块。示例代码:

age = 20
if age >= 18:print("成年人")

(2)if-else语句:在满足条件时执行一个代码块,否则执行另一个代码块。

# if-else语句
# 语法: 
#   if 条件表达式 :
#       代码块
#   else :
#       代码块
# 执行流程:
#   if-else语句在执行时,先对if后的条件表达式进行求值判断
#       如果为True,则执行if后的代码块
#       如果为False,则执行else后的代码块

示例代码:

age = 16
if age >= 18:print("成年人")
else:print("未成年人")

(3)if-elif-else语句:在满足多个条件时执行不同的代码块。

# if-elif-else语句
# 语法:
#   if 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   else :
#       代码块
#       
# 执行流程:
#   if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
#       如果表达式的结果为True,则执行当前代码块,然后语句结束
#       如果表达式的结果为False,则继续向下判断,直到找到True为止
#       如果所有的表达式都是False,则执行else后的代码块
#   if-elif-else中只会有一个代码块会执行

示例代码:

score = 85
if score >= 90:print("优秀")
elif score >= 80:print("良好")
elif score >= 60:print("及格")
else:print("不及格")

以上是常见的条件控制语句,它们根据条件的真假来决定执行哪个代码块。你可以根据实际需求选择合适的条件控制语句,它们可以帮助你根据不同的条件执行不同的操作。

(4)嵌套条件控制语句:在一个条件控制语句内部嵌套另一个条件控制语句,可以处理更复杂的条件逻辑。 示例代码:

x = 10
y = 5
if x > 0:if y > 0:print("x和y都大于0")else:print("x大于0,但y小于等于0")
else:print("x小于等于0")

(5)真值表达式:在条件控制语句中,除了使用具体的布尔值(True或False)作为条件外,还可以使用其他类型的值作为条件。在Python中,以下值被视为假(False):False、None、数值0(如0、0.0)、空的序列(如空列表、空元组、空字符串)。 示例代码:

x = []
if x:print("x不为空")
else:print("x为空")

(6)条件表达式的短路求值:在逻辑运算符中,当条件表达式的结果已经确定时,后面的条件表达式不会再被计算。这种机制称为短路求值。 示例代码:

x = 5
y = 0
if x > 0 and y > 0:  # 由于x不大于0,后面的条件表达式y > 0不会被计算print("x和y都大于0")
else:print("至少有一个小于等于0")

当需要判断多个条件是否满足时,可以使用逻辑运算符来组合条件表达式。

(7)多个条件都满足:使用逻辑运算符and来连接多个条件,只有当所有条件都为真时,整个条件表达式才为真。 示例代码:

age = 25
score = 90
if age > 18 and score > 80:print("年龄大于18且分数大于80")

(8)多个条件有一个满足:使用逻辑运算符or来连接多个条件,只要有一个条件为真,整个条件表达式就为真。 示例代码:

is_sunny = True
is_warm = False
if is_sunny or is_warm:print("天晴或气温温暖")

这样,你可以根据实际需求编写条件判断语句,同时考虑多个条件的组合关系。使用逻辑运算符andor可以根据不同的逻辑需求,对多个条件进行合适的判断。

2. input函数

input()函数用于从用户处获取输入,并将用户输入的内容作为字符串返回。它可以用于与用户进行交互,接收用户的输入并根据输入进行相应的处理。

使用input()函数的一般语法为:

variable = input(prompt)

其中,prompt是一个可选的字符串参数,用于向用户显示提示信息,告诉用户需要输入什么内容。

示例代码:

name = input("请输入您的姓名: ")
print("您好," + name + "!")

在上面的示例中,用户输入姓名后,input()函数会将输入的内容作为字符串返回,并将其赋值给变量name。然后,程序会打印出"您好,"加上用户输入的姓名。

需要注意的是,input()函数返回的是字符串类型。如果需要将输入的内容解析为其他数据类型(如整数、浮点数等),可以使用类型转换函数进行转换,例如int()float()等。

示例代码:

age = input("请输入您的年龄: ")
age = int(age)  # 将输入的年龄转换为整数类型
print("您的年龄是 " + str(age) + " 岁。")

在上面的示例中,我们将用户输入的年龄转换为整数类型,并将其存储在变量age中。然后,程序会打印出年龄信息。

通过使用input()函数,你可以与用户进行交互,获取用户的输入,并根据输入进行相应的处理。这在编写交互式程序或需要用户输入数据的情况下非常有用。

3. 循环语句

循环语句是在程序中重复执行一段代码的一种结构。在Python中,常见的循环语句有两种:for循环和while循环。

(1)for循环:用于遍历可迭代对象(如列表、元组、字符串等)中的元素,按照顺序逐个处理。 示例代码:

fruits = ['apple', 'banana', 'orange']
for fruit in fruits:print(fruit)

(2)while循环:在满足一定条件的情况下,重复执行一段代码,直到条件不满足时退出循环。 示例代码:

count = 0
while count < 5:print("Count: ", count)count += 1

除了上述两种常见的循环语句,还有一些控制循环的关键字可以使用:

  • break:用于立即退出当前循环,不再执行后续的循环迭代。 示例代码:

# for循环
numbers = [1, 2, 3, 4, 5]
for number in numbers:if number == 3:breakprint(number)# while循环
i = 0
while i < 5:i += 1if i == 3:break  # 当 i 等于 3 时,提前结束循环,跳出循环体print(i)
  • continue:用于跳过当前循环迭代,继续执行下一次迭代。 示例代码:
# for循环
numbers = [1, 2, 3, 4, 5]
for number in numbers:if number == 3:continueprint(number)# while循环
i = 0
while i < 5:i += 1if i == 3:continue  # 当 i 等于 3 时,跳过本次循环的剩余代码,直接进入下一次循环print(i)

通过循环语句,你可以根据需要重复执行一段代码,遍历数据集合或在满足条件的情况下执行特定的操作。循环语句是编程中非常重要的一部分,可以提高代码的灵活性和效率。

(3)while-else循环:Python 的 while 循环语句可以搭配 else 关键字使用。这个 else 块会在 while 循环正常执行完毕(即循环条件为假)时执行,但如果循环中使用了 break 语句提前结束了循环,则不会执行该 else 块。

示例代码:

count = 0
while count < 5:print("Count:", count)count += 1
else:print("循环结束")

在上述示例中,当 count 小于 5 时,循环会一直执行,每次输出当前的 count 值。当 count 达到 5 时,循环条件为假,循环正常结束,此时会执行 else 块并输出"循环结束"。如果在循环过程中使用了 break 语句提前结束循环,那么 else 块将不会被执行。

4. 练习

(1)求100以内所有的奇数之和

sum = 0  # 记录奇数之和的变量
number = 1  # 初始值为1while number <= 100:if number % 2 != 0:  # 判断是否为奇数sum += number  # 如果是奇数,累加到奇数之和变量中number += 1  # 增加数值继续下一次循环# 输出结果
print("100以内所有奇数之和为:", sum)

输出结果为:

100以内所有奇数之和为: 2500

使用while循环,通过一个计数变量number来逐个判断数值是否为奇数,并将奇数累加到sum变量中,直到number超过100时结束循环。最后输出结果为100以内所有的奇数之和,即2500。

(2)求100以内所有的奇数之和

sum = 0  # 记录奇数之和的变量# 循环1到100的数字
for i in range(1, 101):if i % 2 != 0:  # 判断是否为奇数sum += i  # 如果是奇数,累加到奇数之和变量中# 输出结果
print("100以内所有奇数之和为:", sum)

输出结果为:

100以内所有奇数之和为: 2500

因此,100以内所有的奇数之和为2500。

(3)求1000以内所有的水仙花数

水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。

# 获取1000以内的三位数
i = 100
while i < 1000:# 假设,i的百位数是a,十位数b,个位数c# 求i的百位数a = i // 100# 求i的十位数# b = i // 10 % 10b = (i - a * 100) // 10# 求i的个位数字c = i % 10# print(i , a , b , c)# 判断i是否是水仙花数if a**3 + b**3 + c**3 == i :print(i)i += 1

输出结果为:

153
370
371
407***Repl Closed***

5. 小游戏

5.1 猜数字小游戏

import randomprint('-'*20, '欢迎来到猜数字游戏', '-'*20)number = random.randint(1, 100)  # 随机生成一个1到100的数字guess = 0
count = 0while guess != number:guess = int(input('请输入你猜测的数字(1-100):'))count += 1if guess < number:print('猜小了!')elif guess > number:print('猜大了!')else:print(f'恭喜你猜对了!答案是{number},你一共猜了{count}次。')play_again = input('是否再玩一次?(输入Y继续,其他键退出):')if play_again.upper() == 'Y':number = random.randint(1, 100)count = 0else:print('感谢参与游戏,再见!')break

这个猜数字的游戏会随机生成一个1到100的数字,玩家需要输入猜测的数字,程序会根据猜测结果给出提示(猜大了或猜小了),直到猜对为止。猜对后,程序会显示猜对的次数,并询问玩家是否继续游戏。玩家可以选择继续猜数字或退出游戏。

5.2 唐僧大战白骨精

# 显示欢迎信息
print('-'*20,'欢迎光临《唐僧大战白骨精》','-'*20)# 显示身份选择的信息
print('请选择你的身份:')
print('\t1.唐僧')
print('\t2.白骨精')
# 游戏的身份选择
player_choose = input('请选择[1-2]:')# 打印一条分割线
print('-'*66)# 根据用户的选择来显示不同的提示信息
if player_choose == '1':# 选择1print('你已经选择了1,你将以->唐僧<-的身份来进行游戏!')
elif player_choose == '2':# 选择2print('你竟然选择了白骨精,太不要脸了,你将以->唐僧<-的身份来进行游戏!')
else :# 选择3print('你的输入有误,系统将自动分配身份,你将以->唐僧<-的身份来进行游戏!')# 进入游戏# 创建变量,来保存玩家的生命值和攻击力
player_life = 2 # 生命值
player_attack = 2 # 攻击力# 创建一个变量,保存boss的生命值和攻击力
boss_life = 10
boss_attack = 10# 打印一条分割线
print('-'*66)
# 显示玩家的信息(攻击力、生命值)
print(f'唐僧,你的生命值是 {player_life} , 你的攻击力是 {player_attack}')# 由于游戏选项是需要反复显示的,所以必须将其编写到一个循环中
while True :# 打印一条分割线print('-'*66)# 显示游戏选项,游戏正式开始print('请选择你要进行的操作:')print('\t1.练级')print('\t2.打BOSS')print('\t3.逃跑')game_choose = input('请选择要做的操作[1-3]:')# 处理用户的选择if game_choose == '1' :# 增加玩家的生命值和攻击力player_life += 2player_attack += 2# 显示最新的信息# 打印一条分割线print('-'*66)# 显示玩家的信息(攻击力、生命值)print(f'恭喜你升级了!,你现在的生命值是 {player_life} , 你的攻击力是 {player_attack}')elif game_choose == '2' :# 玩家攻击boss# 减去boss的生命值,减去的生命值应该等于玩家的攻击力boss_life -= player_attack # 打印一条分割线print('-'*66)print('->唐僧<- 攻击了 ->白骨精<-')# 检查boss是否死亡if boss_life <= 0 :# boss死亡,player胜利,游戏结束print(f'->白骨精<-受到了 {player_attack} 点伤害,重伤不治死了,->唐僧<-赢得了胜利!')# 游戏结束break# boss要反击玩家# 减去玩家的生命值player_life -= boss_attack print(' ->白骨精<- 攻击了 ->唐僧<-')# 检查玩家是否死亡if player_life <= 0 :# 玩家死亡print(f'你受到了 {boss_attack} 点伤害,重伤不治死了!GAME OVER')# 游戏结束breakelif game_choose == '3' :# 打印一条分割线print('-'*66)# 逃跑,退出游戏print('->唐僧<-一扭头,撒腿就跑!GAME OVER')breakelse :# 打印一条分割线print('-'*66)print('你的输入有误,请重新输入!')

http://www.lryc.cn/news/70342.html

相关文章:

  • 【进阶】C 语言表驱动法编程原理与实践
  • java+springboot留学生新闻资讯网的设计与实现
  • 分布式事务与分布式锁区别及概念学习
  • windows先的conda环境复制到linux环境
  • 庄懂的TA笔记(十七)<特效:屏幕UV + 屏幕扰动>
  • 手写简易RPC框架
  • 基于孪生网络的目标跟踪
  • 苏州狮山广场能耗管理系统
  • Jupyter Notebook 10个提升体验的高级技巧
  • CF 751 --B. Divine Array
  • Springcloud1--->Eureka注册中心
  • 面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
  • JAVA开发(记一次删除完全相同pgSQL数据库记录只保留一条)
  • 音视频八股文(7)-- 音频aac adts三层结构
  • Docker代码环境打包进阶 - DockerHub分享镜像
  • SQL进阶-having子句的力量
  • Electron 如何创建模态窗口?
  • 诺贝尔化学奖:酶分子“定向进化”
  • Centos8下源码编译安装运行Primihub
  • 嘉兴桐乡考证培训-23年教资认定注意事项你知道吗?
  • oracle客户端的安装教程
  • python 文件操作 , 异常处理 , 模块和包
  • AIGC技术研究与应用 ---- 下一代人工智能:新范式!新生产力!(1-简介)
  • Flask restful分页接口实现
  • 27事务管理AOP
  • 煤矿电子封条实施方案 yolov7
  • Linux-inode和block概述
  • 安卓开发投屏反控实现方式
  • 外网SSH远程连接linux服务器「cpolar内网穿透」
  • Deferred Components-实现Flutter运行时动态下发Dart代码 | 京东云技术团队