当前位置: 首页 > 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('你的输入有误,请重新输入!')

相关文章:

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

1. 条件判断语句 条件控制语句用于根据条件来决定程序的执行路径。在Python中&#xff0c;常见的条件控制语句有以下几种&#xff1a; &#xff08;1&#xff09;if语句&#xff1a;用于执行满足条件的代码块。示例代码&#xff1a; age 20 if age > 18:print("成年…...

【进阶】C 语言表驱动法编程原理与实践

数据压倒一切。如果选择了正确的数据结构并把一切组织的井井有条&#xff0c;正确的算法就不言自明。编程的核心是数据结构&#xff0c;而不是算法。——Rob Pike 目录 说明 概念提出 查表方式 直接查找 索引查找 分段查找 实战示例 字符统计 月天校验 名称构造 值名…...

java+springboot留学生新闻资讯网的设计与实现

Spring框架是Java平台的一个开放源代码的Full-stack(全栈)应用程序框架&#xff0c;和控制翻转容器的实现。Spring框架的一些核心功能理论&#xff0c;可以用于所有Java应用&#xff0c;Spring还为Java EE构建的Web应用提供大量的扩展支持。Spring框架没有实现任何的编程模型&a…...

分布式事务与分布式锁区别及概念学习

一、 分布式事务 1.1 背景 传统事务ACID是基于单数据库的本地事务,仅支持单机事务,并不支持跨库事务。但随着微服务架构的普及,业务的分库分表导致一个大型业务系统往往由若干个子系统构成,这些子系统又拥有各自独立的数据库。往往一个业务流程需要由多个子系统共同完成,…...

windows先的conda环境复制到linux环境

如果是迁移的环境一致&#xff1a;同是windows或同是linux直接用这个命令即可&#xff1a; conda create -n new_env_name --clone old_env_path 如果是window的环境迁移到linux这种跨环境就不能用上面的方法&#xff0c;网上这方面的资料也很多&#xff0c;记录一下我的…...

庄懂的TA笔记(十七)<特效:屏幕UV + 屏幕扰动>

庄懂的TA笔记&#xff08;十七&#xff09;&#xff1c;特效&#xff1a;屏幕UV 屏幕扰动&#xff1e; 大纲&#xff1a; 目录 庄懂的TA笔记&#xff08;十七&#xff09;&#xff1c;特效&#xff1a;屏幕UV 屏幕扰动&#xff1e; 大纲&#xff1a; 正文&#xff1a; 一…...

手写简易RPC框架

目录 简介 服务提供者 服务注册&#xff1a;注册中心 HttpServerHandler处理远程调用请求 consumer服务消费端 简介 RPC&#xff08;Remote Procedure Call&#xff09;——远程过程调用&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c; 而不需要了解…...

基于孪生网络的目标跟踪

一、目标跟踪 目标跟踪是计算机视觉领域研究的一个热点问题&#xff0c;其利用视频或图像序列的上下文信息&#xff0c;对目标的外观和运动信息进行建模&#xff0c;从而对目标运动状态进行预测并标定目标的位置。具体而言&#xff0c;视觉目标&#xff08;单目标&#xff09;…...

苏州狮山广场能耗管理系统

摘要&#xff1a;随着社会生活水平的提高&#xff0c;经济的繁荣发展&#xff0c;人们对能源的需求逐渐增长&#xff0c;由此带来的能源危机日益严重。商场如何实时的了解、分析和控制商场的能源消耗已成为需要解决的迫在眉睫的难题。传统的能源消耗智能以月/季度/年为周期进行…...

Jupyter Notebook 10个提升体验的高级技巧

Jupyter 笔记本是数据科学家和分析师用于交互式计算、数据可视化和协作的工具。Jupyter 笔记本的基本功能大家都已经很熟悉了&#xff0c;但还有一些鲜为人知的技巧可以大大提高生产力和效率。在这篇文章中&#xff0c;我将介绍10个可以提升体验的高级技巧。 改变注释的颜色 颜…...

CF 751 --B. Divine Array

Black is gifted with a Divine array a consisting of n (1≤n≤2000) integers. Each position in a has an initial value. After shouting a curse over the array, it becomes angry and starts an unstoppable transformation. The transformation consists of infinite…...

Springcloud1--->Eureka注册中心

目录 Eureka原理Eureka入门案例编写EurekaServer将user-service注册到Eureka消费者从Eureka获取服务 Eureka详解基础架构高可用的Eureka Server失效剔除和自我保护 Eureka原理 Eureka&#xff1a;就是服务注册中心&#xff08;可以是一个集群&#xff09;&#xff0c;对外暴露自…...

面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生

测试员可以先在大厂镀金&#xff0c;以后去中小厂毫无压力&#xff0c;基本不会被卡&#xff0c;事实果真如此吗&#xff1f;但是在我身上却是给了我很大一巴掌... 所谓大厂镀金只是不卡简历而已&#xff0c;如果面试答得稀烂&#xff0c;人家根本不会要你。况且要不是大厂出来…...

JAVA开发(记一次删除完全相同pgSQL数据库记录只保留一条)

进行数据管理时&#xff0c;无效数据可能会对生产力和决策质量造成严重的影响。如何发现和处理无效数据变得愈发重要。一起来唠唠你会如何处理无效数据吧~ 方向一&#xff1a;介绍无效数据的概念 最近遇到了pg数据库表中的大量数据重复了&#xff0c;需要删除其中的一条。一条…...

音视频八股文(7)-- 音频aac adts三层结构

AAC介绍 AAC&#xff08;Advanced Audio Coding&#xff09;是一种现代的音频编码技术&#xff0c;用于数字音频的传输和存储领域。AAC是MPEG-2和MPEG-4标准中的一部分&#xff0c;可提供更高质量的音频数据&#xff0c;并且相比于MP3等旧有音频格式&#xff0c;AAC需要更少的…...

Docker代码环境打包进阶 - DockerHub分享镜像

1. Docker Hub介绍 Docker Hub是一个广泛使用的容器镜像注册中心&#xff0c;为开发人员提供了方便的平台来存储、共享和分发Docker容器镜像。它支持版本控制、访问控制和自动化构建&#xff0c;并提供了丰富的公共镜像库&#xff0c;方便开发人员快速获取和使用各种开源应用和…...

SQL进阶-having子句的力量

SQL进阶-having子句的力量 having子句是理解SQL面向集合这一本质的关键。 在以前的SQL标准里面&#xff0c;having子句必须和group by子句一起使用&#xff0c;但是按照现在的SQL标准&#xff0c;having子句是可以单独使用的 可以与case 表达式或者自连接等结合使用。表不是文件…...

Electron 如何创建模态窗口?

目录 前言一、模态窗口1.Web页面模态框2.Electron中的模态窗口3.区分父子窗口与模态窗口 二、实际案例使用总结 前言 模态框是一种常用的交互元素&#xff0c;无论是在 Web 网站、桌面应用还是移动 APP 中&#xff0c;都有其应用场景。模态框指的是一种弹出窗口&#xff0c;它…...

诺贝尔化学奖:酶分子“定向进化”

2018年&#xff0c;诺贝尔化学奖迎来了历史上第五位女性得主——加州理工学院的Frances H. Arnold教授&#xff0c;以表彰她在“酶的定向进化”这一领域的贡献。 1、“酶的定向进化”到底是什么&#xff1f; 这里有三个点&#xff0c;“酶”、“进化”还有“定向”&#xff1a…...

Centos8下源码编译安装运行Primihub

参考文献 PrimiHub 本地编译启动How to install Bazel on CentOS 8 Linux or Redhat 8/7 编译启动步骤 由于历史原因&#xff0c;服务器是Centos8操作系统&#xff0c;所以源码编译异常的麻烦。特此记录如下。 采用源码编译方式可以在一步步的运行过程中对整个流程进行深刻…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...