一.While循环
可以控制多个执行状态,直到条件不满足为止才跳出循环
用法:while ... :
如果满足条件,会执行分支代码
通常会改变数据的值
case_number=10000 current=0 while current<=case_number: print(f"正在执行第{current}个用例") current += 1 print("用例执行完成")
二.break和continue
举例:
case_number=10000 current=0 while True: if current<10000: print(f"正在执行第{current}个用例") current += 1 print("用例执行完成") # 不会打印出来,因为没有跳出while循环,但是current还是在计数,程序还在运行
break:强制退出循环
case_number=10000 current=0 while True: if current<10000: print(f"正在执行第{current}个用例") else: break #强制退出循环 current += 1 print("用例执行完成")
continue:
跳过本次循环未执行的语句,继续进入下次循环
continue后的不会执行
case_number=10000 current=0 while True: if current<10000: print(f"正在执行第{current}个用例") continue print("继续") # 跳过这一次,进入下一次判断 # continue后的不会执行 else: break current += 1 print("用例执行完成")
三.for循环
1.for循环的本质是对一个序列(一组简单的数据集合)上的元素进行遍历,逐一完成对序列中每个元素的使用
2.语句:for ...in....:
a=["用例1","用例2","用例3"] for case in a: print(f"正在执行:{case}")#遍历列表
3.遍历字典
a = {"用例1":"one", "用例2":"two", "用例3":"three"} for case in a: print(case)#只取key for case in a.values(): print(case)#只取values for case in a.items(): print(case)#取到key和values,且为元组 for case in a.items(): print(case[0],case[1])#用索引取值 #TODO:这种形式用的最多 for key,values in a.items(): print(f"正在执行:key:{key} values:{values}")#用两个变量接收值
4.元祖拆包(只是最开始从元组开始,列表,字典都可以适用)
c,d=(6,"hello") print(c) print(d)
5.enumerate():显示索引
names=["小黄","小红","小绿","小蓝"] #for的循环用法 #enumerate()显示索引 for index,name in enumerate(names): print(index,name)
6.
range():
输入整型数据n,表示从0开始到n-1结束,生成这样一些元素的整型列表
range(start,end,step),步长类似切片
for i in range(1,5): print(i)#i的取值=1,2,3,4 for i in range(1,10,2): print(i)#取10以内的奇数
7.for循环的嵌套
# for循环的嵌套 for a in range(1,5): print(a) for b in range(1,5):#子循环:是在母循环第一次取值的时候,取所有可用值 print(b) print()#表示换行 #当a=1时,b=1,2,3,4 #当a=2时,b=1,2,3,4 # ... # 以此类推
四、作业
题目一:
编写如下程序:
a.用户输入1-7七个数字,分别代表周一到周日;
b.如果输入1~5,打印对应的“周一”~“周五”,如果输入的数字是6或7,打印输出“周末”
c.如果输入0,退出循环
d.输入其他内容,提示:“输入有误,请重新输入!”
提示:本题可以使用if和while循环,同时需要校验用户的输入是否正确。不用考虑浮点数等情况。
答:
#方法一:# 用字典存储 day_dct = {"1":"周一","2": "周二","3": "周三","4": "周四","5":"周五","6":"周末","7":"周末"} while True: day_num = input("请输入一个数字:") if day_num in day_dct: print(day_dct[day_num])#字典的索引 elif day_num=="0": break #用break中止循环 else: print("输入有误,请重新输入!") #方法二:用列表存储 day_lst=["周一","周二","周三","周四","周五","周末","周末"] while True: day_str = int(input("请输入一个数字:")) if 0<day_str<8: print(f"{day_lst[day_str-1]}")#列表的索引,由于从0开始,要-1 elif day_str==0: break #中止循环 else: print("输入有误,请重新输入!")
题目二:
使用for循环打印九九乘法表。
提示:每项数据之间空一个Tab键,可以使用 print("数字", end='\t')
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
答:
for a in range(1,10):
for b in range(1, a+1):
print(f"{b}*{a} = {a*b}", end="\t ")#\t 横向制表符
print()
题目三:
实现冒泡排序(不要求提交,面试之前背熟,什么是冒泡排序需要自己了解)
具体需求:利用for循环,完成a=[1,7,4,89,34,2]的排序(小的数字排前面,大的排后面),不能使用sort、sorted等内置函数或方法
编码提示:
1、先写出第一轮比较的代码哦。如在a当中,将最大的一个数据放在列表最后。
2、再写出第二轮比较的代码:在1之后的列表当中,将第二大的数据,放在列表的倒数第二
3、以此类推
4、比对以上所写的代码,有何相同,有何不同之处。再考虑使用外层for来替换
# 冒泡排序的定义: # 重复地走访过要排序的数列,从第一个数开始一次比较相邻两个元素,如果顺序错误就进行交换。直到没有再需要交换也就是已经排序完成 a=[1,7,4,89,34,2] for i in range(len(a)):#获取循环次数6次--列表6个元素 i取值=0,1,2,3,4,5 print(f"第{i+1}次冒泡") for j in range(0,len(a)-i-1):#子循环表示:每进行一次遍历,依次和后面的元素进行比较 if a[j]>a[j+1]: a[j], a[j + 1] = a[j + 1], a[j] # Python中 交换当前元素和后一个元素的值进行比较 print(f"{i} {j} {a}") else: print(f"{i} {j} {a}") continue print(f"冒泡数字为:{a[len(a)-1-i]}") print(f"排序结果:{a}")