条件控制和循环控制是两种典型的流程控制方法,前面我们写了 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. 左右手切换工具xmouse v1.2版本发布

    Xmouse 方便的切换鼠标左右键,因为功能非常简单,所以支持.net framework 2.0及以上 windows环境就可以了,目前已测试win7.win10可用. 关于为什么做这么个东西,那是 ...

  2. 手把手教学~基于element封装tree树状下拉框

    在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用.在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍. 通过这篇文章,你可以了解学习到一个树 ...

  3. SAP -SE30 程序运行时间分析

    运行SE30 选中Program,点击Excute 点击运行 分析结果

  4. bat-静默安装winrar并设置系统级环境变量

    @echo off Setlocal enabledelayedexpansion @REM vscode中自动开启延迟环境变量扩展 echo 安装winrar "winrar v.5.71 ...

  5. sql-sql优化

    SQL执行流程 a. 编写过程: select dinstinct .. from .. join .. on .. where .. group by .. having .. order by . ...

  6. gitlab和jenkins做持续集成构建教程

    背景介绍 上一个轮回,我花了三篇文章的时间着重向大家介绍了在条件有限的情况下,如果优雅地进行前端发版和迭代.庆七一,热烈庆祝香港回归,人民生活水平越来越好,昨天上午我自掏腰包买了台服务器,决定由冷兵器 ...

  7. 12月15日DP作业

    [APIO2014]连珠线 考虑一组以 \(x\) 为中点的蓝边,有两种可能: \[son[x]->x->fa[x] \] \[son[x]->x->son[x] \] 其中若 ...

  8. JDBC:处理事务

    1.如何实现事务 如果现在希望对 A 表和 B 表同时删除某一个 id 号的记录,使这两个sql操作组成一个事务.(成功则同时成功,否则都失败) 注意:如果 B 表 建立了引用 A 表的id外键,并指 ...

  9. labview从入门到出家7(进阶篇)--队列的使用

    本节简单讲解队列在Labview中的使用,队列你可以认为就是一组先进先出的数据列表,在Labview中常用来缓存和传递数据.用了这么久的队列,个人认为有个方便的地方在于数据传递的把控,不管是局部变量还 ...

  10. 字符输入流_Reader类&FileReader类介绍和字符输入读取字符数据

    java.io.Reader:字符输入流的最顶层父类,其中定义了一些共性的成员方法,是一个抽象类共性的成员方法 int read() 读取单个字符并返回 int read(char[] cbuf) 将 ...