Python语言第二章之控制流程(判断,循环)

判断

1. if 语句

if 语句语法:

if 判断的条件:

        条件成立时, 执行的代码

flag = False
if flag == True:print("hhh")age = 19
if age > 18:print("可以上网了! ")

2. if-else 语句

定义一个整数, 记录年龄
判断是否满18
如果满18, 允许进网吧
age = int(input("请输入年龄: "))
if age >= 18:print("允许进网吧")
else:print("未成年")

3. if - elif - else 语句

需求:
1. 定义 holiday_name 字符串变量记录节日名称
2. 如果是 情人节,应该 买玫瑰/看电影
3. 如果是 平安夜,应该 买苹果/吃大餐
4. 如果是 生日,应该 买蛋糕
5. 其他的日子,每天都是节日……
holiday_name = input("请输入节日: ")
if holiday_name == "情人节":print("买玫瑰/看电影")
elif holiday_name == "平安夜":print("买苹果/吃大餐")
elif holiday_name == "生日":print("买蛋糕")
else:print("每天都是节日")

4. if 嵌套

需求:
1. 定义布尔型变量 has_ticket 表示是否有车票
2. 定义整型变量 knife_length 表示刀的长度,单位:厘米
3. 首先检查是否有车票,如果有,才允许进行 安检
4. 安检时,需要检查刀的长度,
5. 判断是否超过 20 厘米a. 如果超过 20 厘米,提示刀的长度,不允许上车b. 如果不超过 20 厘米,安检通过
6. 如果没有车票,不允许进门
has_ticket = eval(input("请输入是否有车票: "))
knife_length = int(input("请输入刀的长度: "))if has_ticket:if knife_length <= 20:print("安检通过")print("刀的长度:{}".format(knife_length))else:print("不允许上车")print(f"刀的长度是:{knife_length}")else:print("不允许进入")

5. 判断案例: 猜拳游戏

需求:
1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
3. 比较胜负并输出结果player == 1 and computer == 2
player == 2 and computer == 3
player == 3 and computer == 1
import randomplayer = int(input("请玩家输入石头(1)剪刀(2)布(3): "))
computer = random.randint(1, 3)
print("computer: {}".format(computer))
if player == computer:print("平局")
elif (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):print("player win")
else:print("computer win")

循环

循环的作用是让指定的代码重复的执行

1. while 循环

1.1 while 循环语法

while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行

# 1.定义循环变量
i = 1
# 2.使用while判断条件
while i <= 10000:# 要重复执行的代码print('吃饭啦')# 3.修改循环变量i += 1
1.2 死循环

死循环指的是程序持续执行,无法终止。原因通常是忘记在循环内部修改循环变量的值

比如:

# 1.定义循环变量
i = 0
# 2.使用while判断条件
while i < 10000:# 要重复执行的代码print('吃饭啦')

和正常代码相比,在循环内部忘记修改循环变量,循环条件一直满足,循环就会一直执行。死循环在程序中也有一定的使用场景,可以保证程序不会停止。

比如:QQ的服务器要保证能一直接收到消息,通常内部会有死循环支持。再比如,做界面开发时,为了保证界面能一直显示,内部也通常会维护一个死循环

死循环最简单的写法如下:

while True:pass
1.3 while 循环嵌套
打印直角三角形

根据用户输入的数值n,打印n行三角形

*
**
***
****
*****

i = 1
while i <= 5:j = 1while j <= i:print("*",end = '\t')j += 1print()i+=1
打印倒直角三角形

*****
****
***
**
*

i = 5
while i >= 1:j = 1while j <= i:print("*", end='\t')j += 1print()i -= 1
1.3 循环嵌套

 while 嵌套就是:while 里面还有 while

while循环嵌套的格式如下:

1.4 while 循环案例
九九乘法表

思路分析:

  1. 打印星星
  2. 使用嵌套循环打印阶梯星星
  3. 将星星替换成乘法口诀公式
i = 1
while i <= 9:j = 1while j <= i:print("%d * %d = %d" % (j, i, j*i),end='\t')j += 1print()i += 1
倒九九乘法表
i = 9
while i >= 1:j = 1while j <= i:print("%d * %d = %d" % (j, i, j * i), end='\t')j += 1print()i -= 1

2. for 循环

2.1 for 循环语法

for循环的主要作用是遍历数据(容器))中的元素。字符串、列表等高级数据类型都属于容器,都可以通过for循环遍历

for循环的语法格式如下:

for 临时变量 in 列表或字符串等可迭代对象:执行的代码

使用for循环遍历字符串中的所有字符

需求:

打印字符串'hello world'中每一个字符

str = 'hello world'
# ele普通变量  接收容器中的元素
for s in str:print(s)
2.2 in和not in

in 操作符用于判断元素是否存在于容器中,如果在容器中,返回 True,否则返回 False

in 操作符用于判断元素是否存在于容器中,如果在容器中,返回 True,否则返回 False

str = 'hello'
result = 'h' in str
print(result)
result = 'e' not in str
print(result)

结果

True
False

2.3 for 循环控制循环次数 range

range() 可创建一个整数列表。range()相当于数学中的左闭右开区间(包含左,不包含右)

我们先看看数学中的区间:

全开全闭区间

  • 开区间:(1,10) 不包含1和10
  • 闭区间:[1,10] 包含1和10

半开半闭区间

  • 左开右闭区间:(1,10] 包含10不包含1
  • 左闭右开区间:[1,10) 包含1不包含10
range的定义
# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)

如果区间从0开始可以省略0

# 定义0到10的区间(包含0,不包含10)
arr = range(10)

倒序的区间定义

# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
arr = range(10, 0, -1)

区间可以通过for进行遍历

"""
range 包含左边,不包含右边
如果从0开始,则不可以省略0
"""
arr = range(0, 5)
for i in arr:print(i)  # 0 1 2 3 4
print("--------------------------")arr2 = range(6)
for i in arr2:print(i)  # 0 1 2 3 4 5
print("--------------------------")
"""
倒序 10-1的区间, 参数分别代表: 开始,结束,step(步长)
step:步长,表示间隔的数量"""
arr3 = range(10, 0, -1)
#
# for i in arr3:
#     print(i)
2.3 for 循环案例: 水仙花数

打印出所有"水仙花数",所谓"水仙花数"是指一个三位数[100, 1000),其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。


# num = 153
# bai = int(num / 100)
# print(int(bai))
# shi = int(num / 10 - int(bai) * 10)
# print(int(shi))
# ge = int(num - (int(bai) * 100) - (int(shi) * 10))
# print(int(ge))
# print(bai*bai*bai + shi*shi*shi + ge*ge*ge)# num = range(100, 1000)
# for i in num:
#     bai = int(i / 100)
#     shi = int(i / 10 - int(bai) * 10)
#     ge = int(i - (int(bai) * 100) - (int(shi) * 10))
#     if i == bai*bai*bai + shi*shi*shi + ge*ge*ge:
#         print(i)"""
1. 遍历所有的三位数
2. 求 百位 十位个位  立方和
3. 判断并打印
"""
for ele in range(100, 1000):# 百位hun = ele // 100# 十位ten = ele // 10 % 10# 个位single = ele % 10# 判断立方和# 立方 pow(hun, 3) 或者 hun ** 3if (hun ** 3 + ten ** 3 + single ** 3) == ele:print(ele)for i in range(100, 1000):bai = i // 100shi = i // 10 % 10ge = i % 10if i == pow(bai, 3) + pow(shi, 3) + pow(ge, 3):print(i)

3. 循环的跳转

breakcontinue是专门在循环中使用的关键字

  • break:某一条件满足时,不再执行循环体中后续代码,并退出循环
  • continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断
3.1 break
for i in range(5):if i == 3:breakprint(i)

结果:

0
1
2

3.2 continue

for i in range(5):if i == 3:continueprint(i)

结果:

0
1
2
4

4. 循环中的else

循环也可以像if语句一样结合else

else 中的语句会在循环正常执行完(即没有通过 break或其他异常情况中断循环)的情况下执行,while循环也是如此

格式:

for 变量 in 容器:
    循环体代码
else:
    没有通过break退出循环, 循环结束后, 会执行的代码

for else,会执行else中的代码
str = 'hello world'for ele in str:print(ele)else:print('执行了else语句')

for else中执行了continue,会执行else中的代码
for ele in str:if ele == 'l':continueprint(ele)else:print('执行了else语句')

for else中执行了break,else语句不会执行
for ele in str:if ele == 'l':breakprint(ele)else:print('else语句不会执行')

5. 循环案例: 密码合法判断

需求

判断登录密码hhew2383dW_fkf&E@^是否合法。

  1. 密码必须是数字、字母(大小写都可以)、和下划线,否则不合法
  2. 如果密码合法,就输出"密码合法"
分析
  1. 定义容器,保存所有的数字 字母 _
  2. for循环遍历密码中每一个元素
  3. 判断每一个元素是否合法
  4. 如果不合法,执行break

password = 'hhew2383dW_fkfE'
# 2.定义容器:保存所有的数字 字母 _
container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'for ele in password:# 判断每一个元素是否合法# 每一个元素 是否在容器中if ele not in container:print("密码不合法, 不可包含%s" % ele)break
else:# 密码合法就不会执行了print("密码合法")

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PDF 书签制作与调整

本文是对以前发表的旧文拆分&#xff0c;因为原文主题太多&#xff0c;过长&#xff0c;特另起一篇分述。 第一部分 由可编辑 PDF 文档创建书签 方法 1. Adobe Acrobat Pro autobookmark AutoBookmark 是一个可用于 Adobe Acrobat 自动生成书签的插件。 官方下载地址&…

【Canvas与艺术】绘制金色八卦图

【关键点】 等比例缩放各部件及将八卦转为“二进制”的过程。 【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>使用…

Java进阶-泛型深入理解

概述 泛型是JDK5中引入的新特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查格式&#xff1a;<数据类型>&#xff1b;泛型只支持引用数据类型集合体系的全部接口和实现类都支持泛型的使用 集合详解→http://t.csdnimg.cn/R5zQ5 自定义泛型类 …

Taro + vue3 实现自定义返回栏

算是一个简单的返回页面 <template><div class"wechat-order-detail-container"><navBar v-if"pageTitle" :page-title"pageTitle"></navBar></div> </template> <script setup> import { ref } fro…

B008-方法参数传递可变参数工具类

目录 方法参数传递可变参数冒泡排序Arrays工具类Arrays工具类常用方法 方法参数传递 /*** java中只有值传递* 基本数据类型 传递的是具体的值* 引用数据类型 传递的是地址值*/ public class _01_ParamPass {public static void main(String[] args) {// 调用方法 getSumge…

加州理工华人用AI颠覆数学证明!提速5倍震惊陶哲轩,80%数学步骤全自动化

加州理工团队解决了形式化研究神器Lean运行LLM推理时的核心技术挑战&#xff0c;可以让LLM在Lean中提出证明策略&#xff0c;允许人类以无缝的方式干预和修改。 Lean Copilot&#xff0c;让陶哲轩等众多数学家赞不绝口的这个形式化数学工具&#xff0c;又有超强进化了&#xf…

Introducing Meta Llama 3: The most capable openly available LLM to date

要点 今天&#xff0c;我们推出 Meta Llama 3&#xff0c;这是我们最先进的开源大型语言模型的下一代。Llama 3型号将很快在AWS&#xff0c;Databricks&#xff0c;Google Cloud&#xff0c;Hugging Face&#xff0c;Kaggle&#xff0c;IBM WatsonX&#xff0c;Microsoft Azur…

美国站群服务器如何提升网站SEO排名和用户体验?

美国站群服务器如何提升网站SEO排名和用户体验? 在数字化时代&#xff0c;网站的成功与否不仅取决于内容质量&#xff0c;还受到搜索引擎排名和用户体验的影响。为了在竞争激烈的网络世界中脱颖而出&#xff0c;许多企业转向了美国站群服务器&#xff0c;以提升其网站的SEO排…

机器学习:考试复习提纲

该页仅为复习资料&#xff0c;内含博客链接均通过搜索得到。 当然直接访问我的GitHub博客会更方便。 1. 线性回归 Linear Regression https://www.cnblogs.com/geo-will/p/10468253.html 要求1&#xff1a;可以按照自己的理解简述线性回归问题。 回归分析是一种预测性的建模…

VsCode一直连接不上 timed out

前言 前段时间用VsCode连接远程服务器&#xff0c;正常操作后总是连接不上&#xff0c;折磨了半个多小时&#xff0c;后面才知道原来是服务器设置的问题&#xff0c;故记录一下&#xff0c;防止后面的小伙伴也踩坑。 我使用的是阿里云服务器&#xff0c;如果是使用其他平台服务…

NAT的知识点和实现

1.NAT的作用&#xff1a; &#xff08;1&#xff09;、把内网私网IP转换公网IP&#xff1b; &#xff08;2&#xff09;、隐藏内网&#xff0c;起到保护内网作用&#xff1b; &#xff08;3&#xff09;、适当的缓解的IPv4地址空间枯竭&#xff1b; &#xff08;4&#xff…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之③:数据分析之一(智能报表)

概述 在企业数字化转型的过程中&#xff0c;ERP系统与数据平台作为核心支撑工具&#xff0c;对于提升运营效率、优化决策支持、实现业务流程一体化起着至关重要的作用。然而&#xff0c;智能报表与报表的智能化合并作为其中的重要领域&#xff0c;却往往面临诸多挑战与难点&am…

Etsy多账号关联怎么办?Etsy店铺防关联解决方法

Etsy虽然相对于其他跨境电商平台来说比较小众&#xff0c;但因为平台是以卖手工艺品为主的&#xff0c;所以成本较低&#xff0c;利润很高。许多跨境卖家都纷纷入驻&#xff0c;导致平台规则越发严格&#xff0c;操作不当就会封号&#xff0c;比如一个卖家操作多个账号会出现关…

[激光原理与应用-90]:光功率计基本原理

目录 一、光功率计原理 二、光功率计硬件电路 三、光功率计探头 四、接口信号 一、光功率计原理 光功率计是用来测量光功率的仪器&#xff0c;其原理基于光电效应和电信号的检测与处理。 下面是光功率计的基本原理&#xff1a; 光电效应&#xff1a; 光功率计使用光敏元件…

家用洗地机哪款好用?盘点618值得买的洗地机品牌

对于工作忙碌或家里养了宠物的很多朋友来说&#xff0c;洗地机它集合吸尘清扫湿拖的功能&#xff0c;很大程度上解放了家庭清洁劳动的繁琐&#xff0c;让人们腾出更多的时间休息&#xff0c;那么&#xff0c;市场上有很多牌子的洗地机&#xff0c;价格也各不相同&#xff0c;那…

3.8、气泡提示(Popup)

Popup 属性可绑定在组件上显示气泡弹窗提示,设置弹窗内容、交互逻辑和显示状态。主要用于屏幕录制、信息弹出提醒等显示状态。 气泡分为两种类型,一种是系统提供的气泡 PopupOptions,一种是开发者可以自定义的气泡 CustomPopupOptions。其中 PopupOptions 为系统提供的气泡…

玩转React路由,教你根据角色动态生成路由

情景再现&#xff1a;用户登录成功后&#xff0c;我已经获取到了用户的角色&#xff0c;并且根据角色获取到了用户的拥有的权限路由。我想在登录成功后动态的生成路由&#xff0c;来实现不同角色的用户,具备不同的权限&#xff0c;应该怎么实现&#xff1f;可以我考虑以下几种方…

ATFX汇市:欧元区和美国的制造业PMI将发布,市场预期乐观

ATFX汇市&#xff1a;今日16:00&#xff0c;市场研究机构Markit将发布欧元区4月制造业PMI初值&#xff0c;前值为46.1&#xff0c;预期值46.6&#xff0c;预期将增加0.5个百分点。历史数据看&#xff0c;最近三个月&#xff0c;欧元区的制造业PMI均处于较高水平&#xff0c;期间…

ctfshow web入门 SQl注入 web185--web190

web185 这道题还有另外一个脚本就是用concat的拼接达到有数字的目的 concat(truetrue) 2 concat(true) 1 concat(true, true) 11 然后上脚本&#xff08;Y4tacker这个师傅的&#xff09; # Author:Y4tacker import requestsurl "http://341e93e1-a1e7-446a-b7fc-75beb…