当前位置: 首页 > 后端技术 > Python

Python自学笔记10-for循环和while循环

时间:2023-03-26 17:19:58 Python

循环是控制进程的另一种方式。循环体中的代码在程序中只需要写一次,但可能会连续运行多次。python中主要有两种循环结构:while循环,即当满足一定条件时,重复运行一段固定的代码。for循环就是遍历某组数据,一次取出一个,反复运行一段固定的代码。while循环while循环的语法和if条件非常相似:whileexpression:statement1当满足表达式条件时,执行statement1语句。语句执行完后会回到第一行继续判断是否满足条件。如果条件一直满足,循环语句不能退出,就会发生死循环。whileTrue:print("hello,you")为了让程序运行到某个阶段退出循环体,需要改变条件。当条件变为不满足状态时,可以退出循环结构:times=0whiletimes<1000:print(f"helloyou{times}")times+=1forloopfor循环是一种比较常用的循环结构,主要用来遍历一组数据,达到循环执行的效果。这组数据通常是字符串、列表、元素、字典等可迭代数据,第一个循环是h,第二个循环是e。退出循环构造后,临时变量变得无效。forletterinmy_string:print(letter)#YESprint(letter)#NO遍历列表dalaos=['小芳','温暖如初','小蚊子']fordalaoindalaos:print(dalao)遍历字符串,For列表、元组等数据,可以使用enumerate函数同时获取index和value,经常用到。dalaos=['小芳','温暖如初','小蚊子']forindex,iteminenumerate(dalaos):print(item)遍历字典遍历字典默认获取keyuser={"name":"小芳","age":"17"}foriteminuser:print(item)比较常见的是同时获取key和value:forkey,iteminuser.items():print(key,item)rangerange的作用是产生一个类似列表的数据,range(6)产生类似[0,1,2,3,4,5]的数据。当需要将某个代码循环运行指定次数,但是没有现成的数据可以遍历时,可以使用rangeforiteminrange(10000):print(item)range()的参数类似到切片,当只有一个参数时,有两个参数时,表示结束索引号。当有两个参数时,表示起始索引号和结束索引号。当有三个参数时,增加步长。#start,endforiteminrange(3,8):print(item)#start,end,stepforiteminrange(3,8,2):print(item)循环的嵌套我们之前知道for循环是有效的就是对一组数据中的不同元素执行相同的操作(代码)。如果要对不同的元素进行差异化操作,可以使用for循环嵌套if的组合。dalaos=['小芳','温暖如初','小蚊子']fordalaoindalaos:ifdalao=='小芳':print("村里有个女孩叫小芳。")else:print("没有你要找的人")组元素:users=[{"name":'yyz',"age":18},{"name":'小芳',"age":16},{"name":'v',"age":19},{"name":'w',"age":20},]adult=[]kids=[]foruserinusers:#user={"name":'yyz',"age":18}ifuser['age']>=18:adult.append(user)else:kids.append(user)print(adult)print(kids)break在while和for循环体中,都可以使用break关键字来终止整个循环体的运行,尤其是和if结合使用时,当满足某个条件时,终止整个循环结构。True:username=input("Enterusername")paword=input("Enterpassword")ifusername=='admin'andpaword=='123456':print('login')breakcontinuecontinue可以跳过这个循环,输入下一个周期。他也经常和if一起使用:songs=['Legend','','gift','hometown','']forsonginsongs:ifnotsong:print("Nextsong")continueprint(f"Playingnow:{song}")Loop自动化测试自动化测试场景实际使用:表示多个测试数据1.编写程序存储一个测试数据username=input("请输入用户名:")pass=input("Pleaseenterpassword:")age=input("Pleaseentertheage:")user=dict()user.update(username=username,pass=pass,age=age)2.写一个程序,可以存储多个测试数据users=list()users.append(user)print(users)3.添加多个用例并运行多个用例users=list()whilelen(users)<3:username=input("请输入用户名:")pass=input("请输入您的密码:")age=input("请输入您的年龄:")user=dict()user.update(username=username,passd=pass,age=age)users.append(user)print(users)forcaseinusers:print(f"Runusecase-username{case['username']}")新的loop,可能很难分析接下来会执行哪一行代码,这时候可以在loop体内设置断点,以debug模式运行程序,了解代码的执行过程。Exercises练习一:如何生成0-100的奇数?练习2:求0-100之间数字的总和?练习3:求0-100之间的数的奇数和和偶数练习4:生成由*组成的直角三角形练习5:将c变成一个平面列表whileTrue:try:n=int(input())nums=[int(i)foriininput().split()]a=[]iflen(nums)==0:print(0)foriinnums:position=bisect.bisect_left(a,i)#插入我应该插入a的位置索引,排序;ifi已经存在,返回左边的位置索引iflen(a)==position:#第一个元素,或者大于a中元素的元素Onlyinserta.append(i)else:a[position]=i#否则替换相应的索引值print(len(a))except:break