【Python学习】条件和循环

news/2025/2/10 9:33:41/

前言

往期文章

【Python学习】列表和元组

【Python学习】字典和集合

条件控制

简单来说:当判断的条件为真时,执行某种代码逻辑,这就是条件控制。

那么在讲条件控制之前,可以给大家讲一个程序员当中流传的比较真实的一个例子

说有一天一个程序员,他的媳妇让他去出去买两个包子,那出去之前,他媳妇这么跟他说的,说老公你出去给我买两个包子
,如果看见卖西瓜的就买一个回来。

结果这个程序员回来了,买一个包子。结果媳妇给他一顿揍。

然后问他为啥,你为啥就买一个包子回来?,他回答他媳妇说我看见了卖西瓜的,所以买了一个包子。

其实这个就是条件控制一个典型的,一个生活化的一个说明场景


条件语句

条件控制就是我们常见的的if else

# y = |x|
if x < 0:y = -x
else:y = x

在条件语句后面加上 冒号:

python不支持switch语句,但是支持elif

if condition_1:statement_1
elif condition_2:statement_2
...
elif condition_i:statement_i
else:statement_n

不少人喜欢省略半段的条件,就像这样

if s: # s is a string...
if l: # l is a list...
if i: # i is an int...
... 


循环语句

一般通过for循环和while循环实现

l = [1, 2, 3, 4]
for item in l:print(item)

在python数据结构只要时可迭代对象,如列表,集合,等等,就可以遍历

for item in <iterable>:...

但是字典本身只有键时课迭代的,如何要遍历字典的值和键值对,要通过内置的函数values() 和items() 实现

d = {'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'}
for k in d: # 遍历字典的键print(k)
name
dob
genderfor v in d.values(): # 遍历字典的值print(v)
jason
2000-01-01
male    for k, v in d.items(): # 遍历字典的键值对print('key: {}, value: {}'.format(k, v))
key: name, value: jason
key: dob, value: 2000-01-01
key: gender, value: male 

当然可以通过索引来遍历元素

l = [1, 2, 3, 4, 5, 6, 7]
for index in range(0, len(l)):if index < 5:print(l[index])        

别忘了还有一个更重要的enumerate() 函数

l = [1, 2, 3, 4, 5, 6, 7]
for index, item in enumerate(l):if index < 5:print(item)  

在循环语句中,要通过continue 或break 一起使用

continue,就是让程序跳过当前这层循环,继续执行下面的循环

break 则是指完全跳出所在的整个循环体

现在找出价格小于1000,颜色不是红色的产品名称和颜色组合,如果不用continue

# name_price: 产品名称 (str) 到价格 (int) 的映射字典
# name_color: 产品名字 (str) 到颜色 (list of str) 的映射字典
for name, price in name_price.items():if price < 1000:if name in name_color:for color in name_color[name]:if color != 'red':print('name: {}, color: {}'.format(name, color))else:print('name: {}, color: {}'.format(name, 'None'))

共用了5层for 或if 的嵌套

加上了continue,只有3层

# name_price: 产品名称 (str) 到价格 (int) 的映射字典
# name_color: 产品名字 (str) 到颜色 (list of str) 的映射字典
for name, price in name_price.items():if price >= 1000:continueif name not in name_color:print('name: {}, color: {}'.format(name, 'None'))for color in name_color[name]:if color == 'red':continueprint('name: {}, color: {}'.format(name, color))

while

l = [1, 2, 3, 4]
index = 0
while index < len(l):print(l[index])index += 1

那么在什么场合使用for和continue

如果只是遍历已知的集合,找出满足条件的元素,使用for更加的简洁

如果需要在满足某个条件前,要不停的重复操作,并且没有特定的集合来遍历

例如

while True:try:text = input('Please enter your questions, enter "q" to exit')if text == 'q':print('Exit system')break......print(response)except as err:print('Encountered error: {}'.format(err))break 

for 循环和while循环的效率问题

i = 0
while i < 1000000i += 1for i in range(0, 1000000):pass

range()函数直接时C语言写的,调用的速度非常快,for循环的效率更高

对于有些大神直接写成一行操作

expression1 if condition else expression2 for item in iterable

分解成

for item in iterable:if condition:expression1else:expression2

如何没有else

expression for item in iterable if condition

现在绘制 y = 2*|x| + 5 的函数图像

只需一行

y = [value * 2 + 5 if x > 0 else -value * 2 + 5 for value in x]

在处理字符串时,将文件逐行读取,按照逗号分隔单词,去掉首位空字符,过滤小于3的单词,最后返回单词组成的列表

text = ' Today,  is, Sunday'
text_list = [s.strip() for s in text.split(',') if len(s.strip()) > 3]
print(text_list)
['Today', 'Sunday']

给定两个列表 x、y,要求返回 x、y 中所有元素对组成的元组

[(xx, yy) for xx in x for yy in y if x != y]  
l = []
for xx in x:for yy in y:if x != y:l.append((x, y))

最后

刚开始接触Python的宝子,有什么不懂的都可以私信我哦
我还准备了大量的免费视频教程,PDF电子书籍,以及源代码!直接在文末名片自取即可哦!


http://www.ppmy.cn/news/12677.html

相关文章

合作升级|Kyligence 跬智智能分析平台入选华为云联营商品

近日&#xff0c;Kyligence 跬智智能分析平台正式入选华为云联营商品&#xff0c;成为华为云在数据分析领域的联营合作伙伴。通过联营模式&#xff0c;双方将加深在产品、解决方案等多个领域的合作&#xff0c;携手打造“共生、共创、共营、共赢”的合作生态&#xff0c;为用户…

【每日一道智力题】之猴子搬香蕉

题目一个小猴子边上有100根香蕉&#xff0c;它要走过50米才能到家&#xff0c;每次它最多搬50根香蕉&#xff0c;&#xff08;多了就被压坏了&#xff09;&#xff0c;它每走1米就要吃掉一根&#xff0c;请问它最多能把多少根香蕉搬到家里。&#xff08;提示&#xff1a;他可以…

2023/1 寒假期间自学c++计划安排

寒假一期学习总结 寒假一期学习是在线下进行的&#xff0c;总的来说&#xff0c;非常充实&#xff0c;也很有收获&#xff0c;成体系的学习了 二分&#xff0c;高精度&#xff0c;函数&#xff0c;结构体&#xff0c;STL 等等内容&#xff0c;既开心有学到了知识。 在这7天的集…

WPS Office 2019 版本 excel透视图创建及删除

摘要&#xff1a;记录一下在做2022年总结数据时遇到的问题&#xff0c;主要问题有2个&#xff0c;①从飞书多维表格导下来数据后不能求和计算和下拉序号&#xff0c;②excel数据透视表创建及删除。 相关文章&#xff1a; 一、Excel WPS Office 2019 版本 excel透视图创建及删…

注意力FM模型AFM

1. 概述 在CTR预估任务中&#xff0c;对模型特征的探索是一个重要的分支方向&#xff0c;尤其是特征的交叉&#xff0c;从早起的线性模型Logistic Regression开始&#xff0c;研究者在其中加入了人工的交叉特征&#xff0c;对最终的预估效果起到了正向的效果&#xff0c;但是人…

我的周刊(第074期)

我的信息周刊&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。&#x1f3af; 项目code-server[1]这是一款开源的基于 VSCode 的在线编…

Spring学习系列(二)

Spring_特殊值的注入问题和各种类型的自动装配1.set两种方式的区别第4中赋值方式&#xff1a;自动装配&#xff08;只适用于ref类型&#xff09;使用注解定义bean1.set两种方式的区别 &#xff08;1&#xff09;把值写到value属性里面&#xff0c;必须加引号&#xff0c;写到子…

一分钟带你了解如何防范0day攻击

在网络安全体系中&#xff0c;0day通常是指还没有补丁的漏洞&#xff0c;而0day攻击则是指利用0day漏洞进行的攻击。该攻击方式影响范围大&#xff0c;具有广泛性&#xff0c;而且传统防御手段无法检测&#xff0c;因此防护0day攻击便成为大家关注的焦点。那么0day攻击防护措施…