条件控制和循环控制是两种典型的流程控制方法,前面我们写了 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) # YES
print(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循环的更多相关文章

  1. python自学笔记

    python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...

  2. JAVA自学笔记10

    JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...

  3. python自学笔记(一)

    我没学过python,通过网上和一些图书资料,自学并且记下笔记. 很多细节留作以后自己做项目时再研究,这样能更高效一些. python基础自学笔记 一.基本输入和输出 pthon3.0用input提示 ...

  4. Python 自学笔记(五)

    1.布尔值 1-1.概念 定义计算机中的逻辑判断,只有两种结果,True和False. if,while后面的判断条件就是布尔值,只有条件为True的时候才执行. 1-2.数值比较 1-3.数值运算 ...

  5. 风变编程(Python自学笔记)第10关-工作量计算器

    1.%f的意思是格式化字符串为浮点型,%.1f的意思是格式化字符串为浮点型,并保留1位小数. 2.向上取整:ceil() 使用ceil()方法时需要导入math模块,例如 1 >>> ...

  6. python自学笔记一

    之前看过一段时间的小甲鱼零基础自学python,b站上有高清免费资源[av4050443],但是作为零基础实在学得艰难,下载了python核心编程pdf,在这里做一些笔记. 虽然使用的是第二版的教材, ...

  7. python 自学笔记(四) 列表

    有几天没有更新博客了,毕竟是自学,最近事情确实比较多,有时候想学的时候反而没时间,到有时间的时候反而不想学.以后得想办法改掉这个缺点,只要有时间就要学习自己想学的东西,希望自学的同学能和我共同交流,其 ...

  8. Python自学笔记-生成器(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...

  9. Python自学笔记-filter()函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. Python内 ...

随机推荐

  1. 技术分享 | app测试中常用的Android模拟器

    原文链接 Emulator Emualor 是 Android Studio 自带的模拟器,是官方提供的工具,Android 开发最常使用的就是这一款. 它功能非常齐全,电话本.通话等功能都可正常使用 ...

  2. 【Java面试】TCP协议为什么要设计三次握手?

    一个工作5年的粉丝,最近去面试了很多公司,每次都被各种技术原理题问得语无伦次. 由于找了快1个月时间的工作,有点焦虑,来向我求助. 我能做的只是保证每天更新一个面试题,然后问他印象最深刻的一个面试题是 ...

  3. 理论+案例,带你掌握Angular依赖注入模式的应用

    摘要:介绍了Angular中依赖注入是如何查找依赖,如何配置提供商,如何用限定和过滤作用的装饰器拿到想要的实例,进一步通过N个案例分析如何结合依赖注入的知识点来解决开发编程中会遇到的问题. 本文分享自 ...

  4. android stdio开发抖音自动点赞案例

    最近做了一个安卓开发自动刷抖音. 点赞. 评论等等养号行为. 总结一下知识点和遇到的一些问题: 知识点: 1. 使用acessibility mode 对抖音自动化操作. android stdio中 ...

  5. Throwable类中3个异常处理的方法和finally代码块

    /* Throwable类中定义了3个异常处理的方法 String getMessage() 返回此 throwable 的简短描述. String toString() 返回此 throwable ...

  6. Note -「狄利克雷前缀和」

    学到一个诡异东西,当个 Trick 处理用吧. 现在有一个形如 \(\sum \limits _{i = 1} ^{n} \sum \limits _{d | i} f(d)\) 的柿子,不难发现可以 ...

  7. Mysql 系列 | 日志模块

    了解了 SQL 执行的流程,知道每一条语句都经过连接器.查询存储.分析器.优化器.执行器最后到存储引擎的过程.查询语句是如此,更新语句也不例外. 不同的是,更新语句会修改表数据,这里就涉及到两个重要的 ...

  8. 常见加密算法C#实现(一)

    前言:最近项目中需要用到字符串加解密,遂研究了一波,发现密码学真的是博大精深,好多算法的设计都相当巧妙,学到了不少东西,在这里做个小小的总结,方便后续查阅. 文中关键词: 明文(P,Plaintext ...

  9. 基于infiniband(IB)网的MVAPICH2安装

    一.下载安装包 下载链接:http://mvapich.cse.ohio-state.edu/downloads/  二.解压编译安装 mkdir /home/xujb/mvapich2 tar -x ...

  10. Bika LIMS 开源LIMS集—— SENAITE的使用(用户、角色、部门)

    设置 添加实验室人员,系统用户 因为创建实验室时必须选择实验室经理/主任/负责人,因此需要先创建实验室经理人员. 创建人员时输入人员姓名,可上传签名图片. 创建实验室部门 输入实验室名称.代码,选择实 ...