【Python学习】条件和循环

news2024/11/29 16:32:13

前言

往期文章

【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
gender

for 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:
        continue
    if name not in name_color:
        print('name: {}, color: {}'.format(name, 'None'))
    for color in name_color[name]:
        if color == 'red':
            continue
        print('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 < 1000000
    i += 1

for i in range(0, 1000000):
    pass

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

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

expression1 if condition else expression2 for item in iterable

分解成

for item in iterable:
    if condition:
        expression1
    else:
        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.coloradmin.cn/o/166112.html

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

相关文章

CUDA规约算法(加和)

1.block内相邻元素规约&#xff08;线程不连续&#xff09; 上图为1个block内的16个线程的操作示意&#xff1a; 第0个线程会和第1&#xff0c;2&#xff0c;4&#xff0c;8发生关系 第2个线程会和第3个线程发生关系 第4个线程会和第5&#xff0c;6个线程发生关系 ... 以上…

这7个网络设备配置接口基本参数要牢记,从此接口相关配置不用怕!

本文给大家介绍网络设备配置接口基本参数&#xff0c;包括接口描述信息、接口流量统计时间间隔功能以及开启或关闭接口。 进入接口视图 背景信息 对接口进行基本配置前&#xff0c;需要进入接口视图。 操作步骤 执行命令system-view&#xff0c;进入系统视图。执行命令inte…

Widget小组件

目录 技能点 Widget背调 a. 设计定位 b. Widget小组件限制 c. Widget小组件 开发须知 d. 什么是 SwiftUI App Group 数据共享 a. 配置 App Groups 1、开发者账号配置&#xff0c;并更新pp证书 2、Xcode配置 b. 缓存数据共享-代码实现 1、文件存储 2. 沙盒存储&…

【MySQL】运算符及相关函数详解

序号系列文章3【MySQL】MySQL基本数据类型4【MySQL】MySQL表的七大约束5【MySQL】字符集与校对集详解6【MySQL】MySQL单表操作详解文章目录前言MySQL运算符1&#xff0c;算术运算符1.1&#xff0c;算术运算符的基本使用1.2&#xff0c;常用数学函数的基本使用2&#xff0c;比较…

vulnhub DC系列 DC-7

总结&#xff1a;社工尝试 目录 下载地址 漏洞分析 信息收集 ssh webshell 命令执行 提权 下载地址 DC-7.zip (Size: 939 MB)Download: http://www.five86.com/downloads/DC-7.zipDownload (Mirror): https://download.vulnhub.com/dc/DC-7.zip漏洞分析 信息收集 这里还…

代码随想录算法训练营第13天 239.滑动窗口最大值、347. 前 K 个高频元素

代码随想录算法训练营第13天 239.滑动窗口最大值、347. 前 K 个高频元素 滑动窗口最大值 力扣题目链接(opens new window) 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只…

YonBuilder 应用构建教程之移动端扩展

YonBuilder 移动端扩展 在上一篇文章中&#xff0c;我们通过对员工信息实体的移动端页面构建来对 YonBuilder 移动端配置的基础流程进行了简单的介绍&#xff0c;本篇文章则通过之前搭建的出入库实体来进行扩展&#xff0c;主要介绍如何在移动端中添加跳转页面的功能以及通过函…

大连理工大学(开发区校区)2023年新生赛(验题人题解)

难度分布 根据排行榜情况&#xff0c;大致分布如下&#xff1a; Easy&#xff1a;AIDE Middle&#xff1a;CJF Hard&#xff1a;GBH 题解 A. Hello World.&#xff08;题意实现&#xff09; 直接输出Hello world. I. lgl想签到&#xff08;题意实现&#xff09; 统计周…

组件优化 - 多project方案

背景 经销商项目目前是混合项目&#xff0c;有oc、swift、flutter&#xff0c;并对应各自的一些三方库&#xff0c;并随着需求的增加&#xff0c;项目代码体积也越来越大&#xff0c;编译速度也相应的慢了很多&#xff0c;这也严重影响了开发速度&#xff0c;故目前的期望是可…

Linux:git工具

文章目录一.git的下载二.如何使用git将代码传到远端仓库2.1在gitee上新建一个仓库2.2克隆仓库到本地git clone2.3将文件添加到本地仓库git add2.4将代码提交到本地仓库git commit -m2.5将本地仓库的内容传到远端仓库中git push三.git的一些其它使用3.1git log查看日志3.2git rm…

【魅力开源】第5集:通过Odoo实现将EXCEL表费用明细,快速导入到ERP总账系统生成凭证

文章目录前言一、拿到这样的一张表二、实现过程1. 控制器(Controller)2. 模型(Model)3. 视图(View)4. 返回生成的凭证号最后前言 这是一个小功能。 财务小姐姐每个月需要不少的时间去手录费用凭证&#xff0c;这个功能可以实现将半天一天时间内完成的事情&#xff0c;在1小时内…

204:vue+openlayers 学习Attribution各种API,示例展示自定义版权信息

第204个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中个性化修改版权信息,这里主要涉及到Attribution各种属性的设置,所以这里先列出属性的信息,然后用示例来展示如何使用。 名称类型说明classNamestring (默认为“ol-attribution”)CSS 类名。targetH…

Acwing---1219.移动距离

移动距离1.题目2.基本思想3.代码实现1.题目 X星球居民小区的楼房全是一样的&#xff0c;并且按矩阵样式排列。 其楼房的编号为 1,2,3… 当排满一行时&#xff0c;从下一行相邻的楼往反方向排号。 比如&#xff1a;当小区排号宽度为 6 时&#xff0c;开始情形如下&#xff1a…

使用Anaconda(3-5.1.0对应 python3.6.3)搭建OpenCV(3.5.1.15)环境和Jupyter Notebook

使用Anaconda搭建python和OpenCV环境1、 Anaconda3-5.1.0下载Anaconda3-5.1.0下载链接&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载 Anaconda3-5.1.0-Windows-x86_64.exe 对应 python3.6.32、安装Anaconda全程下一步&#xff0c;修改了一下默认安装…

如何学习C++图像处理?

学习C图像处理前首先的明确图像处理是什么&#xff0c;它是如何定义的&#xff1f;它能给我们带来哪些便利&#xff1f;之后根据需求选择合适的编程语言&#xff0c;C or python&#xff1f;图像处理(image processing)&#xff0c;用计算机对图像进行分析&#xff0c;以达到所…

你还不知道怎么实现财富自由吗?一篇文章手把手教你入门!

程序猿作为互联网行业的翘楚&#xff0c;压力多多收获也多多。 如果想在上班之余还有外快拿&#xff0c;最好的方法就是利用业余时间做做兼职赚外快&#xff0c;不仅可以充实自己的钱包&#xff0c;还可以磨练自己的技术&#xff0c;一举两得。 找外快可是一门技术活&#xf…

三万秃发人群撑起一个IPO,大麦植发能成功上市吗?

不断壮大的“脱发”大军正撑起植发这一条黄金赛道。据弗若斯特沙利文报告&#xff0c;2020年中国毛发医疗服务的市场规模已达到184亿元&#xff0c;预计到2030年将达到1381亿元&#xff0c;CAGR为22.3%。 由于市场规模增长较快&#xff0c;资本也加强了对植发行业的关注&#…

python实现给pdf文件加骑缝章效果

骑缝章是在合同上经常看到的一种盖章方式&#xff0c;如下图所示。现在电子合同的应用已经越来越广泛&#xff0c;合同上如何实现骑缝章的效果 &#xff0c;也是有必要研究一下的。本文几乎Python的方式&#xff0c;讲述了如果对印章图片进行处理&#xff0c;然后&#xff0c;实…

JAVA校园闲置物品交易系统源码+数据库,为在校师生提供闲置物品发布、物品查询、物品交易等功能

校园闲置平台 校园闲置物品交易系统&#xff0c;为在校师生提供闲置物品发布、物品查询、物品交易等功能。 使用JAVA编写的(javaweb和ssm) Summary 项目的技术栈项目功能介绍项目运行环境部署项目 项目的技术栈 IoC容器:Spring web框架:SpringMVC (PHP版为ThinkPHP) orm…

不会数学的程序员,只能走到初级开发工程师!

作者&#xff1a;小傅哥 博客&#xff1a;https://bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 在我还是初级程序员时&#xff0c;每天也都粘贴着代码和包装着接口。那个阶段并没有意识到数学能在编程中起到什么作用&#xff…