python自学笔记10:while循环和for循环
条件控制和循环控制是两种典型的流程控制方法,前面我们写了 if 条件控制,这节讲 for 循环和 while 循环。

循环是另一种控制流程的方式,一个循环体中的代码在程序中只需要编写一次,但可能会连续运行多次。在 python 中主要包含两种循环结构:
while 循环,表示满足某种条件是,重复运行一段固定代码。 for 循环,表示遍历某组数据,每次取出一个,重复运行一段固定代码。
while 循环
while 循环的语法和 if 条件非常类似:
while expression:
statement1
当 expression 条件满足时,执行 statement1 语句, 语句执行完后,会返回第一行继续判断条件是否满足。如果该条件一直保持满足状态,循环语句无法退出,就会出现死循环的状态。
while True:
print("hello, you")
为了让程序运行到一定阶段退出循环体,需要改变条件,当条件改变到不满足的状态时,就可以退出循环结构了:
times = 0
while times < 1000:
print(f"hello you {times}")
times += 1
for 循环
for 循环是一种更加常用的循环结构,主要作用遍历一组数据达到循环执行的效果。这组数据通常是字符串,列表,元素,字典等可迭代的数据。
my_string = 'hello you'
for letter in my_string:
print(letter)
letter 是一个临时变量,表示每一轮循环从 my_string 中取出来的元素,第一轮循环是 h, 第二轮循环是 e 。临时变量在退出循环结构之后会失效。
for letter in my_string:
print(letter) # YESprint(letter) # NO
遍历列表
dalaos = ['小芳', '温暖如初', '小蚊子']
for dalao in dalaos:
print(dalao)
遍历字符串、列表、元组等数据时,可以使用 enumerate 函数同时获取索引和值,经常可以用到。
dalaos = ['小芳', '温暖如初', '小蚊子']
for index, item in enumerate(dalaos):
print(item)
遍历字典
遍历字典默认是获取 key
user = {"name": "小芳", "age": "17"}
for item in user:
print(item)
同时获取 key 和 value 是更常用的做法:
for key, item in user.items():
print(key, item)
range
range 的作用是生成一个类似于列表的数据,range(6) 生成类似于 [0,1,2,3,4,5] 的数据。当你需要对某段代码循环运行指定次数,但是又没有现成的数据可以遍历时,可以用 range
for item in range(10000):
print(item)
range() 的参数类似于切片的写法,当只有一个参数时,表示结束索引号,当有两个参数时,表示开始和结束的索引号,当有3个参数时,增加步长。
# start, end
for item in range(3,8):
print(item)
# start, end, step
for item in range(3,8,2):
print(item)
循环的嵌套
之前我们了解到, for 循环作用是对一组数据中的不同元素执行相同的操作(代码),如果想对不同的元素进行差异化操作,可以使用 for 循环嵌套 if 的组合。
dalaos = ['小芳', '温暖如初', '小蚊子']
for dalao in dalaos:
if dalao == '小芳':
print("村里有个姑娘,叫小芳。")
else:
print("没有你要找的人")
对元素分组:
users = [
{"name": 'yyz', "age": 18},
{"name": '小芳', "age":16},
{"name": 'v', "age": 19},
{"name": 'w', "age": 20},
]
adult = []
kids = []
for user in users:
# user = {"name": 'yyz', "age": 18}
if user['age'] >= 18:
adult.append(user)
else:
kids.append(user)
print(adult)
print(kids)
break
在 while 和 for 的循环体中,都可以使用 break 关键字终止整个循环体的运行。尤其是在和 if 的搭配使用中,当满足某个条件时,就终止整个循环结构。
while True:
username = input("输入用户名")
paword = input("输入密码")
if username == 'admin' and paword == '123456':
print('login')
break
continue
continue 则可以跳过本轮循环,进入下一轮循环。他也常常和 if 搭配使用:
songs = ['传奇','', '礼物', '故乡', '']
for song in songs:
if not song:
print("下一曲")
continue
print(f"正在播放:{song}")
循环的自动化测试实际使用
自动化测试场景:表示多个测试数据
1、写一个程序,存储一个测试数据
username = input("请输入用户名:")
pass = input("请输入密码:")
age = input("请输入年龄:")
user = dict()
user.update(username=username,
pass=pass,
age=age)
2、写一个程序,可以存储多个测试数据
users = list()
users.append(user)
print(users)
3、添加多个用例,运行多个用例
users = list()
while len(users) < 3:
username = input("请输入用户名:")
pass = input("请输入密码:")
age = input("请输入年龄:")
user = dict()
user.update(username=username,
passd=pass,
age=age)
users.append(user)
print(users)
for case in users:
print(f"运行用例-用户名{case['username']}")
刚接触循环,可能很难分析出代码接下来会执行哪一行,此时可以在循环体内设置一个断点,通过 debug 模式运行程序,从而理解代码的执行过程。
练习题
练习题1:生成 0-100 的奇数怎么写?
练习题2:求出 0-100 的数的和?
练习题3:求出 0-100 的数的奇数和与偶数和
练习题4:生成一个 * 组成的直角三角形
练习题5:把 c 变成一个扁平的列表
while True:
try:
n=int(input())
nums=[int(i) for i in input().split()]
a = []
if len(nums)==0:
print(0)
for i in nums:
position = bisect.bisect_left(a, i)#在a中插入i应插入的位置index,排序;若i已存在,则返回左边的位置index
if len(a)==position:#第一个元素,或者大于a中元素的元素才插入
a.append(i)
else:
a[position]=i#否则替换对应index的值
print(len(a))
except:
break
python自学笔记10:while循环和for循环的更多相关文章
- python自学笔记
python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...
- JAVA自学笔记10
JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...
- python自学笔记(一)
我没学过python,通过网上和一些图书资料,自学并且记下笔记. 很多细节留作以后自己做项目时再研究,这样能更高效一些. python基础自学笔记 一.基本输入和输出 pthon3.0用input提示 ...
- Python 自学笔记(五)
1.布尔值 1-1.概念 定义计算机中的逻辑判断,只有两种结果,True和False. if,while后面的判断条件就是布尔值,只有条件为True的时候才执行. 1-2.数值比较 1-3.数值运算 ...
- 风变编程(Python自学笔记)第10关-工作量计算器
1.%f的意思是格式化字符串为浮点型,%.1f的意思是格式化字符串为浮点型,并保留1位小数. 2.向上取整:ceil() 使用ceil()方法时需要导入math模块,例如 1 >>> ...
- python自学笔记一
之前看过一段时间的小甲鱼零基础自学python,b站上有高清免费资源[av4050443],但是作为零基础实在学得艰难,下载了python核心编程pdf,在这里做一些笔记. 虽然使用的是第二版的教材, ...
- python 自学笔记(四) 列表
有几天没有更新博客了,毕竟是自学,最近事情确实比较多,有时候想学的时候反而没时间,到有时间的时候反而不想学.以后得想办法改掉这个缺点,只要有时间就要学习自己想学的东西,希望自学的同学能和我共同交流,其 ...
- Python自学笔记-生成器(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...
- Python自学笔记-filter()函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...
随机推荐
- 技术分享 | App常见bug解析
原文链接 功能Bug 内容显示错误 前端页面展示的内容有误. 这种错误的产生有两种可能 1.前端代码写的文案错误 2.接口返回值错误 功能错误 功能错误是在测试过程中最常见的类型之一,也就是产品的功能 ...
- 腾讯QQ快捷登陆
腾讯QQ快捷 相关各语言对接qq快捷登录教程 [C#]QQ开放平台(QQ站外登录)_流程和源码示例 j2ee中实现QQ第三方登陆 web实现QQ第三方登录 asp.net网站接入QQ登录 php实现q ...
- Java集合框架(一)-ArrayList
大佬理解->Java集合之ArrayList 1.ArrayList的特点 存放的元素有序 元素不唯一(可以重复) 随机访问快 插入删除元素慢 非线程安全 2.底层实现 底层初始化,使用一个Ob ...
- Docker 配置 Seata 集成 Nacos
1.拉取镜像 docker pull seataio/seata-server:1.4.2 docker run --name seata -p 8091:8091 -d seataio/seata- ...
- 《AlignedReID:Surpassing Human-Level Performance in Person Re-Identification》理解
- CentOS7使用LVM缩减/home空间,扩大/空间
CentOS7使用LVM缩减/home空间,扩大/空间方法:把/home里的内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/文件系统.新建/home,恢复/home的原内容1.查看默认分区[ ...
- Tapdata 在线研讨会:如何快速上手 Tapdata Cloud?
偶然接触到 Tapdata Cloud,据说不仅可以实现异构数据实时同步,还永久 100% 免费,但就是不知道怎么获取.怎么用? 打开相关文档逐渐陷入迷茫,术语."黑话"随处可见, ...
- CRM汇客 牛刀小试 5个BUG修复
1.权限管理-用户管理-高级搜索-手机号搜索不可用 1.1现象 1.2解决思路 1.2.1 定位接口 接口名:system/user/list 请求方式:GET请求 1.2.3 确定bug所在位置 b ...
- eclipse使用小记录
(手动狗头)之前用eclipse的时候左侧的project栏不知道为什么整没了....记录一下 1.击Window--how View--other 2.Project Explorer,就可以了
- eclipse调用MySQL数据库的方法
今天来总结一下使用如何使用eclipse调用MySQL数据库的数据. 一.设置eclipse 我们首先来设置一下eclipse. 在下部的Servers中右键选择new,选择server 之后在新弹出 ...