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

从入门到专业:探索Python中的判断与循环技巧!

文章目录

  • 判断语句
    • 布尔类型和比较运算符
    • if语句的基本格式
    • 练习案例:成年人判断
    • if else语句
    • if elif else语句
    • 判断语句的嵌套
    • 案例:猜数字
  • 循环语句
    • while循环的基础语法
    • while循环的基础案例
    • while循环的嵌套应用
    • 补充:print输出不换行&\t
    • for循环的基础语法
    • range()函数
    • for循环变量的作用域
    • for循环的嵌套应用
    • 循环中断 : break和continue
    • 综合案例:发工资

判断语句

在这里插入图片描述

布尔类型和比较运算符

布尔类型的字面量:

  • True 表示真(是、肯定)
  • False 表示假 (否、否定)
    定义变量存储布尔类型数据:
变量名称 = 布尔类型字面量
# 定义变量存储布尔类型的数据
bool_1 = True
bool_2 = False
print(f"bool_1变量的内容是:{bool_1}, 类型是:{type(bool_1)}") # bool_1变量的内容是:True, 类型是:<class 'bool'>
print(f"bool_2变量的内容是:{bool_2}, 类型是:{type(bool_2)}") # bool_2变量的内容是:False, 类型是:<class 'bool'>
  • 布尔类型不仅可以自行定义,同时也可以通过计算的来。

  • 布尔类型的数据,不仅可以通过定义得到,也可以通过比较运算符进行内容比较得到。
num1 = 10
num2 = 10
print(f"10 == 10的结果是:{num1 == num2}") # Truenum1 = 10
num2 = 15
print(f"10 != 15的结果是:{num1 != num2}")# Falsename1 = "itcast"
name2 = "itheima"
print(f"itcast == itheima 结果是:{name1 == name2}") # Falsenum1 = 10
num2 = 5
print(f"10 > 5结果是:{num1 > num2}")  # True
print(f"10 < 5的结果是:{num1 < num2}")# Falsenum1 = 10
num2 = 11
print(f"10 >= 11的结果是:{num1 >= num2}") # False
print(f"10 <= 11的结果是:{num1 <= num2}") # True

在这里插入图片描述

if语句的基本格式

在这里插入图片描述

# 定义变量
age = 30
# 进行判断
if age >= 18:  print("我已经成年了"

if语句的注意事项:

  • 判断条件的结果一定要是布尔类型
  • 不要忘记判断条件后的: 引号
  • 归属于if语句的代码块,需在前方填充4个空格缩进

练习案例:成年人判断

结合前面学习的input输入语句,完成如下案例:

  1. 通过input语句,获取键盘输入,为变量age赋值。(注意转换成数字类型)
  2. 通过if判断是否是成年人,满足条件则输出提示信息,如下:
    在这里插入图片描述
# 获取键盘输入
age = int(input("请输入你的年龄:"))# 通过if判断是否是成年人
if age >= 18:print("您已成年,游玩需要买票,10元.")print("祝您游玩愉快")

if else语句

在这里插入图片描述

  • 注意:
  1. else后,不需要判断条件
  2. 和if的代码块一样,else的代码块同样需要4个空格作为缩进
age = int(input("请输入你的年龄:"))if age >= 18:print("您已成年,需要买票10元。")
else:print("您未成年,可以免费游玩。")

if elif else语句

在这里插入图片描述
在这里插入图片描述

# 定义一个变量数字
num = 5# 通过键盘输入获取猜想的数字,通过多次if 和 elif的组合进行猜想比较
if int(input("请猜一个数字:")) == num:print("恭喜第一次就猜对了呢")
elif int(input("猜错了,再猜一次:")) == num:print("猜对了")
elif int(input("猜错了,再猜一次:")) == num:print("恭喜,最后一次机会,你猜对了")
else:print("Sorry 猜错了")

判断语句的嵌套

在这里插入图片描述

  • 基本语法格式
    在这里插入图片描述

自由组合嵌套,需求如下:
公司要发礼物,条件是:

  1. 必须是大于等于18岁小于30岁的成年人
  2. 同时入职时间需满足大于两年,或者级别大于3才可领取
age = 11
year = 1
level = 1
if age >= 18:print("你是成年人")if age < 30:print("你的年龄达标了")if year > 2:print("恭喜你,年龄和入职时间都达标,可以领取礼物")elif level > 3:print("恭喜你,年龄和级别达标,可以领取礼物")else:print("不好意思,尽管年龄达标,但是入职时间和级别都不达标。")else:print("不好意思,年龄太大了")else:print("不好意思,小朋友不可以领取。")

  • 总结
  1. 嵌套判断语句可以用于多条件、多层次的逻辑判断
  2. 嵌套判断语句可以根据需求,自由组合if elif else来构建多层次判断
  3. 嵌套判断语句,一定要注意空格缩进,Python通过空格缩进来决定层次关系

案例:猜数字

案例需求: 定义一个数字(1~10,随机产生),通过3次判断来猜出来数字
案例要求:

  1. 数字随机产生,范围1-10
  2. 有3次机会猜测数字,通过3层嵌套判断实现
  3. 每次猜不中,会提示大了或小了
# 1. 构建一个随机的数字变量
import random
num = random.randint(1, 10)guess_num = int(input("输入你要猜测的数字:"))# 2. 通过if判断语句进行数字的猜测
if guess_num == num:print("恭喜,第一次就猜中了")
else:if guess_num > num:print("你猜测的数字大了")else:print("你猜测的数字小了")guess_num = int(input("再次输入你要猜测的数字:"))if guess_num == num:print("恭喜,第二次猜中了")else:if guess_num > num:print("你猜测的数字大了")else:print("你猜测的数字小了")guess_num = int(input("第三次输入你要猜测的数字:"))if guess_num == num:print("第三次猜中了")else:print("三次机会用完了,没有猜中。")

循环语句

在这里插入图片描述

while循环的基础语法

在这里插入图片描述
while循环的注意事项

  1. 条件需提供布尔类型结果,True继续,False停止
  2. 空格缩进不能忘
  3. 请规划好循环终止条件,否则将无限循环
sum = 0
i = 1
while i<=100:sum += ii += 1print(f"1-100累加的和是:{sum}")

while循环的基础案例

设置一个范围1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数

  • 无限次机会,直到猜中为止
  • 每一次猜不中,会提示大了或小了
  • 猜完数字后,提示猜了几次
    在这里插入图片描述
# 获取范围在1-100的随机数字
import random
num = random.randint(1, 100)
# 定义一个变量,记录总共猜测了多少次
count = 0# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:guess_num = int(input("请输入你猜测的数字:"))count += 1if guess_num == num:print("猜中了")# 设置为False就是终止循环的条件flag = Falseelse:if guess_num > num:print("你猜的大了")else:print("你猜的小了")print(f"你总共猜测了{count}次")

while循环的嵌套应用

在这里插入图片描述

  • 同判断语句的嵌套一样,循环语句的嵌套,要注意空格缩进。

    • 基于空格缩进来决定层次关系
  • 注意条件的设置,避免出现无限循环(除非真的需要无限循环)

  • 打印输出九九乘法表

# 定义外层循环的控制变量
i = 1
while i <= 9:# 定义内层循环的控制变量j = 1while j <= i:# 内层循环的print语句,不要换行,通过\t制表符进行对齐print(f"{j} * {i} = {j * i}\t", end='')j += 1i += 1print()     # print空内容,就是输出一个换行

补充:print输出不换行&\t

  • 在Python中,默认情况下,每次调用print()函数都会在输出内容的末尾添加一个换行符(\n),导致下一次输出在新的一行显示。但是,在print语句中避免换行,可以将end参数设置为空字符串"",以表示在输出结束时不添加换行符。
  • 以下是一个示例:
print("Hello", end="")
print("World", end="")
  • 还可以将end参数设置为除换行符之外的任何字符或字符串,用于在输出结束时添加指定的字符或字符串。
    例如,通过将end参数设置为一个空格,你可以在输出结束时添加一个空格:
print("Hello", end=" ")
print("World")
# Hello World
  • 注意,修改end参数的方法仅适用于Python 3.x 版本。在Python 2.x 中,你需要使用print语句而不是print()函数,或者导入print_function,以获得类似的行为。

  • 制表符 “\t” 是一种特殊字符,在字符串中使用它可以创建水平制表位(tab)的效果。它在打印输出或字符串中的对齐时非常有用。
  • 当在字符串中使用制表符 \t,它会在当前位置插入一个制表符,并移动到下一个制表位。制表位的宽度通常是距离前一个制表位的一定间隔,类似于键盘上的 Tab 键所做的效果。
print("Name:\tJohn")
print("Age:\t25")
print("Country:\tUSA")

输出如下:

Name:   John
Age:    25
Country:        USA

for循环的基础语法

  • for循环是一种”轮询”机制,是对一批内容进行”逐个处理”
    在这里插入图片描述
for 临时变量 in 待处理数据集: 循环满足条件时执行的代码
# 统计如下字符串中,有多少个字母a
name = "itheima is a brand of itcast"# 定义一个变量,用来统计有多少个a
count = 0# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:if x == "a":count += 1print(f"被统计的字符串中有{count}个a")

range()函数

  • range()是一个内置函数,用于生成一系列的整数。range()函数可以接受一个或多个参数,返回一个表示整数序列的可迭代对象。
    range()函数的语法格式为:
range(stop)            # 生成从0到stop-1的整数序列
range(start, stop)     # 生成从start到stop-1的整数序列
range(start, stop, step)  # 生成从start到stop-1的整数序列,步长为step

参数说明:

  1. start:可选,表示序列的起始值,默认为0。
  2. stop:表示序列的终止值(不包含在序列内)。
  3. step:可选,表示序列中的元素之间的步长,默认为1。
    range()函数通常用于循环结构,例如for循环:
# 打印输出0到4的整数 
for i in range(5):print(i)
  • range()函数的结果转换为列表,以便查看生成的整数序列:
# 生成一个步长为2的整数序列 [1, 3, 5] 并将其转换为列表后打印
numbers = list(range(1, 6, 2))
print(numbers)
  • 注意,range()函数返回的是一个可迭代对象,而不是实际的列表。如果需要获取完整列表,可以使用list()函数将其转换为列表。
    range()函数在循环迭代和生成整数序列时非常有用,特别是当你需要指定起始值和步长时。

for循环变量的作用域

  1. for循环中的临时变量,其作用域限定为:循环内
  2. 这种限定:
    • 编程规范的限定,而非强制限定
    • 不遵守也能正常运行,但是不建议这样做
    • 如需访问临时变量,可以预先在循环外定义它

name = "Alice"for i in range(3):print(name)  # 可以访问循环体外部定义的变量message = "Hello"print(message)  # 可以访问循环体内部定义的变量print(name)  # 仍然可以访问循环体外部定义的变量

for循环的嵌套应用

  • 练习案例-for循环打印九九乘法表
# 通过外层循环控制行数
for i in range(1, 10):# 通过内层循环控制每一行的数据for j in range(1, i + 1):# 在内层循环中输出每一行的内容print(f"{j} * {i} = {j * i}\t", end=' ')# 外层循环可以通过print输出一个回车符print()

循环中断 : break和continue

  • break和continue是用于控制循环流程的关键字。
    1. break用于终止整个循环,跳出循环结构。
    2. continue用于跳过当前迭代,继续执行下一次迭代。
  1. break关键字用于中断当前循环,提前跳出循环体,执行循环之后的代码。当程序执行到break语句时,循环立即终止,不再执行循环体中剩余的语句,而是跳出整个循环结构。
for i in range(1, 6):if i == 3:break  # 当i等于3时跳出循环print(i)

输出:

1
2
  • 当i等于3时,执行了break语句,因此循环被中断,print(i)语句不再执行。
  1. continue关键字用于跳过当前迭代,继续执行下一次循环迭代。当程序执行到continue语句时,当前迭代中continue之后的代码不再执行,直接进入下一次迭代。
for i in range(1, 6):if i == 3:continue  # 当i等于3时跳过当前迭代print(i)

输出:

1
2
4
5
  • 当i等于3时,执行了continue语句,因此当前迭代中的print(i)语句被跳过,直接进入下一次迭代。

综合案例:发工资

  • 某公司,账户余额有1W元,给20名员工发工资。
    • 员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
    • 领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
    • 如果工资发完了,结束发工资。
money = 10000
for i in range(1, 21):import randomscore = random.randint(1, 10)if score < 5:print(f"员工{i},绩效分{score},低于5,不发工资,下一位。")continueelse:money -= 1000print(f"向员工{i}发放工资1000元,账户余额还剩余{money}元")if money == 0:print("工资发完了,下个月领取吧。")break

相关文章:

从入门到专业:探索Python中的判断与循环技巧!

文章目录 判断语句布尔类型和比较运算符if语句的基本格式练习案例&#xff1a;成年人判断if else语句if elif else语句判断语句的嵌套案例&#xff1a;猜数字 循环语句while循环的基础语法while循环的基础案例while循环的嵌套应用补充&#xff1a;print输出不换行&\tfor循环…...

mqtt、tcp、http的区别

文章目录 一、MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;1、类型2、用途 二、TCP&#xff08;Transmission Control Protocol&#xff09;1、类型2、用途 三、HTTP&#xff08;Hypertext Transfer Protocol&#xff09;1、类型2、用途 四、主要区别1、类…...

边写代码边学习之RNN

1. 什么是 RNN 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种以序列数据为输入来进行建模的深度学习模型&#xff0c;它是 NLP 中最常用的模型。其结构如下图&#xff1a; x是输入&#xff0c;h是隐层单元&#xff0c;o为输出&#xff…...

在linux调试进程PID的方法

当我们谈论调试 PID&#xff08;进程标识符&#xff09;时&#xff0c;我们通常是指诊断和解决与操作系统中的特定进程相关的问题。有许多工具和方法可用于调试 PID&#xff0c;以下是一些常见的方法&#xff1a; 1. 使用ps命令 ps命令是最基本的调试工具&#xff0c;用于查看…...

【并发编程】线程安全的栈容器

std::stack容器的接口包括 empty(), size(), top(), push(), pop()等。 问题 其原接口在多线程的情况下&#xff0c;会持续很多问题。 例如&#xff0c;在std::stack容器的接口中&#xff0c;在多线程下应用时&#xff0c;empty()和size()的结果是不可信的。因为尽管在某线程…...

ES嵌套查询和普通查询的高亮显示区别

在 Elasticsearch 中&#xff0c;高亮显示是一种强大的搜索结果可视化工具&#xff0c;它可以帮助我们快速识别匹配的关键字或短语。在ES中&#xff0c;我们可以使用两种不同的查询方式来实现高亮显示&#xff1a;嵌套查询和普通查询。本文探讨这两种查询方式的高亮显示区别以及…...

Greenplum集群部署

一,安装说明 1.1环境说明 *名称**版本*操作系统CentOS 7.6 64bitgreenplumgreenplum-db-6.10.1-rhel7-x86_64.rpm1.2集群介绍 IPhostname集群节点10.240.3.244gpmastermaster10.240.3.245gpsegment1segment10.240.3.246gpsegment2segment二,安装环境准备 2.1 修改各节点名称…...

电教智能云数据可视化平台开发电能优化日志实录

电教智能云数据可视化平台开发电脑优化日志实录 一、2K和4K弹窗判断二、电能API对接1.电脑爬虫2.电能分组过滤3.数据可视化渲染4.弹窗 三.数组按顺序输出 一、2K和4K弹窗判断 {* 判断2k和4k弹窗 *}{if $dataScene[scene_standard] eq 0}<a class"menuBtn subMenu"…...

JSX语法基础总结

题记&#xff1a;首先我们要了解一下jsx是什么&#xff0c;跟js有什么区别&#xff0c;其实就是js的语法糖&#xff0c;加上了xml的语法&#xff0c;使得产生虚拟dom更加的方便&#xff0c;简单说一下&#xff0c;xml就是存储数据的格式&#xff0c;想了解xml的话&#xff0c;可…...

socker套接字

1.打印错误信息 2.socketaddr_in结构体 结构体&#xff1a; &#xff08;部分库代码&#xff09; (宏中的##) 3.manual TCP: SOCK_STREAM &#xff1a; 提供有序地&#xff0c;可靠的&#xff0c;全双工的&#xff0c;基于连接的流式服务 UDP: 面向数据报...

No111.精选前端面试题,享受每天的挑战和学习

文章目录 map和foreach的区别在组件中如何获取vuex的action对象中的属性怎么去获取封装在vuex的某个接口数据有没有抓包过&#xff1f;你如何跟踪某一个特定的请求&#xff1f;比如一个特定的URL&#xff0c;你如何把有关这部分的url数据提取出来&#xff1f;1. 使用网络抓包工…...

【Apollo学习笔记】—— 相机仿真

文章目录 前言相关代码整理 测试实践文件目录包管理BUILD文件以及cyberfile.xml文件源程序BUILD运行结果其他参考CameraOutput channels启动camera驱动启动camera video compression驱动 前言 本文是对Cyber RT的学习记录,文章可能存在不严谨、不完善、有缺漏的部分&#xff0…...

【数据结构】——线性表的相关习题

目录 题型一&#xff08;线性表的存储结构&#xff09;题型二&#xff08;链表的判空&#xff09;题型三&#xff08;单链表的建立&#xff09;题型四&#xff08;顺序表、单链表的插入删除操作&#xff09;题型五&#xff08;双链表的插入删除操作&#xff09;题型六&#xff…...

SpringBoot集成Elasticsearch8.x(8)|(新版本Java API Client的Painless语言脚本script使用)

SpringBoot集成Elasticsearch8.x&#xff08;8&#xff09;|&#xff08;新版本Java API Client的Painless语言脚本script使用&#xff09; 文章目录 SpringBoot集成Elasticsearch8.x&#xff08;8&#xff09;|&#xff08;新版本Java API Client的Painless语言脚本script使用…...

SpringBoot复习:(19)Condition接口和@Conditional注解

Condition接口代码如下&#xff1a; public interface Condition {boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata);}它是一个函数式接口&#xff0c;只有一个方法matches用来表示条件是否满足。matches方法中的ConditionContext类对象context可以…...

K8s中的Controller

Controller的作用 &#xff08;1&#xff09;确保预期的pod副本数量 &#xff08;2&#xff09;无状态应用部署 &#xff08;3&#xff09;有状态应用部署 &#xff08;4&#xff09;确保所有的node运行同一个pod&#xff0c;一次性任务和定时任务 1.无状态和有状态 无状态&…...

【MFC】03.常用复杂控件的使用-笔记

热键&#xff1a; 对话框-类向导&#xff1a;初始化函数中&#xff0c;热键需要在最开始的时候就注册进去&#xff1a; 注册热键&#xff1a; 在这之前&#xff0c;先去定义一个宏&#xff0c;代表你这个快捷键。 参数&#xff1a;窗口句柄&#xff0c;热键编号&#xff08;热…...

Autosar诊断实战系列14-NRC优先级解析

本文框架 前言1. NRC分类2. NRC优先级判断2.1. NRC优先级判断逻辑介绍2.2 NRC测试注意事项前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关联模块的应…...

《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品特性,架构和应用场景

腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持 10 亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提…...

xcode 的app工程与ffmpeg 4.4版本的静态库联调,ffmpeg内下的断点无法暂停。

先阐述一下我的业务场景&#xff0c;我有一个iOS的app sdk项目&#xff0c;下面简称 A &#xff0c;以及运行 A 的 app 项目&#xff0c;简称 A demo 。 引用关系为 A demo 引用了 A &#xff0c;而 A 引用了 ffmpeg 的静态库&#xff08;.a文件&#xff09;。此时业务出现了 b…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...