python基础第六课_for和while循环

本文介绍了Python的基础循环结构,包括while循环、break和continue的使用,以及for循环的详细操作,如遍历字典、元组拆包和enumerate()。此外,还提供了三个编程实践题目:用户输入工作日判断、九九乘法表打印和冒泡排序的实现,旨在巩固循环控制的理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.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}")

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值