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("天晴或气温温暖")
这样,你可以根据实际需求编写条件判断语句,同时考虑多个条件的组合关系。使用逻辑运算符and
和or
可以根据不同的逻辑需求,对多个条件进行合适的判断。
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中,常见的条件控制语句有以下几种: (1)if语句:用于执行满足条件的代码块。示例代码: age 20 if age > 18:print("成年…...

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

java+springboot留学生新闻资讯网的设计与实现
Spring框架是Java平台的一个开放源代码的Full-stack(全栈)应用程序框架,和控制翻转容器的实现。Spring框架的一些核心功能理论,可以用于所有Java应用,Spring还为Java EE构建的Web应用提供大量的扩展支持。Spring框架没有实现任何的编程模型&a…...
分布式事务与分布式锁区别及概念学习
一、 分布式事务 1.1 背景 传统事务ACID是基于单数据库的本地事务,仅支持单机事务,并不支持跨库事务。但随着微服务架构的普及,业务的分库分表导致一个大型业务系统往往由若干个子系统构成,这些子系统又拥有各自独立的数据库。往往一个业务流程需要由多个子系统共同完成,…...

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

庄懂的TA笔记(十七)<特效:屏幕UV + 屏幕扰动>
庄懂的TA笔记(十七)<特效:屏幕UV 屏幕扰动> 大纲: 目录 庄懂的TA笔记(十七)<特效:屏幕UV 屏幕扰动> 大纲: 正文: 一…...

手写简易RPC框架
目录 简介 服务提供者 服务注册:注册中心 HttpServerHandler处理远程调用请求 consumer服务消费端 简介 RPC(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务, 而不需要了解…...

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

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

Jupyter Notebook 10个提升体验的高级技巧
Jupyter 笔记本是数据科学家和分析师用于交互式计算、数据可视化和协作的工具。Jupyter 笔记本的基本功能大家都已经很熟悉了,但还有一些鲜为人知的技巧可以大大提高生产力和效率。在这篇文章中,我将介绍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:就是服务注册中心(可以是一个集群),对外暴露自…...

面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生
测试员可以先在大厂镀金,以后去中小厂毫无压力,基本不会被卡,事实果真如此吗?但是在我身上却是给了我很大一巴掌... 所谓大厂镀金只是不卡简历而已,如果面试答得稀烂,人家根本不会要你。况且要不是大厂出来…...

JAVA开发(记一次删除完全相同pgSQL数据库记录只保留一条)
进行数据管理时,无效数据可能会对生产力和决策质量造成严重的影响。如何发现和处理无效数据变得愈发重要。一起来唠唠你会如何处理无效数据吧~ 方向一:介绍无效数据的概念 最近遇到了pg数据库表中的大量数据重复了,需要删除其中的一条。一条…...

音视频八股文(7)-- 音频aac adts三层结构
AAC介绍 AAC(Advanced Audio Coding)是一种现代的音频编码技术,用于数字音频的传输和存储领域。AAC是MPEG-2和MPEG-4标准中的一部分,可提供更高质量的音频数据,并且相比于MP3等旧有音频格式,AAC需要更少的…...

Docker代码环境打包进阶 - DockerHub分享镜像
1. Docker Hub介绍 Docker Hub是一个广泛使用的容器镜像注册中心,为开发人员提供了方便的平台来存储、共享和分发Docker容器镜像。它支持版本控制、访问控制和自动化构建,并提供了丰富的公共镜像库,方便开发人员快速获取和使用各种开源应用和…...
SQL进阶-having子句的力量
SQL进阶-having子句的力量 having子句是理解SQL面向集合这一本质的关键。 在以前的SQL标准里面,having子句必须和group by子句一起使用,但是按照现在的SQL标准,having子句是可以单独使用的 可以与case 表达式或者自连接等结合使用。表不是文件…...

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

诺贝尔化学奖:酶分子“定向进化”
2018年,诺贝尔化学奖迎来了历史上第五位女性得主——加州理工学院的Frances H. Arnold教授,以表彰她在“酶的定向进化”这一领域的贡献。 1、“酶的定向进化”到底是什么? 这里有三个点,“酶”、“进化”还有“定向”:…...
Centos8下源码编译安装运行Primihub
参考文献 PrimiHub 本地编译启动How to install Bazel on CentOS 8 Linux or Redhat 8/7 编译启动步骤 由于历史原因,服务器是Centos8操作系统,所以源码编译异常的麻烦。特此记录如下。 采用源码编译方式可以在一步步的运行过程中对整个流程进行深刻…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

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

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

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,SRS管理页面端口是8080,可…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...

前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...