21-Python-循环嵌套

本文介绍了Python中while循环的嵌套使用,并通过打印小星星和生成九九乘法表两个实例来展示如何利用循环嵌套解决问题。文章详细解释了内层循环与外层循环的配合,帮助读者掌握循环嵌套的技巧。

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

04.while循环嵌套

4.1 循环嵌套

l while嵌套就是:while里面还有while

while 条件1:
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...
    while 条件2:
        条件满足时,做的事情1
        条件满足时,做的事情2
        条件满足时,做的事情3
        ...(省略)...

        处理条件2
    处理条件1

4.2循环嵌套演练——九九乘法表

第一步:用嵌套打印小星星

需求

在控制台连续输出五行*,每一行星号的数量依次递增

*

**

***

****

*****

row=1
while row <=5:
	print("*"* row)
	row += 1

第二步:使用循环嵌套打印小星星

知识点对print函数的使用做一个增强

l 在默认情况下,print函数输出内容只后,会自动在内容末尾增加换行

l 如果不希望末尾增加换行,可以在print函数输出内容的后面增加,end=””

l 其中""中间可以指定print函数输出内容之后,继续希望显示的内容

l 语法格式如下:

#向控制台输出内容结束之后,不会换行
print("*",end="")
#单纯的换行
print("")

假设Python没有提供字符串*操作拼接字符串

需求

在控制台连续输出五行*,每一行星号的数量依次递增

*

**

***

****

*****

开发步骤

1>完成5行内容的简单输出

2>分析每行内部的*应该如何处理?

row=1
while row <=5:
	col=1
	while col <= row:
		print("*",end="")
		col +=1
	print("")
	row += 1 

开发步骤

1>完成5行内容的简单输出

2>分析每行内部的*应该如何处理?

3步:九九乘法表

需求输出九九乘法表

1*1=1

2*1=2  2*2=4

3*1=3  3*2=6   3*3=9

4*1=4  4*2=8   4*3=12  4*4=16

5*1=5  5*2=10  5*3=15  5*4=20  5*5=25

6*1=6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36

7*1=7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49

8*1=8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64

9*1=9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81

row=1
while row <= 9:
	col = 1
	while col <= row:
		print("%d * %d =%d"%(col,row,row*col),end="\t")
		col += 1
	print("")
	row += 1






在编程竞赛中,Python嵌套循环常用于解决涉及多重条件或组合的问题。通过多层循环的结构,可以遍历所有可能的组合,从而找到满足条件的解。 ### 示例问题:三位数的组合问题 假设需要找出所有满足以下条件的三位数: 1. 该数能被3整除; 2. 该数至少有一位是数字5。 可以通过嵌套循环的方式实现上述问题的求解。外层循环用于遍历所有三位数(100到999),内层循环则用于检查每一位是否包含数字5。 ```python count = 0 lst = [] for i in range(100, 1000): if i % 3 == 0: a = i % 10 # 个位 b = (i // 10) % 10 # 十位 c = i // 100 # 百位 if a == 5 or b == 5 or c == 5: count += 1 lst.append(i) print("这样的三位数有:", lst) print("总数量有:", count) ``` ### 示例问题:两数之和 在编程竞赛中,还有一种常见的问题是“两数之和”,即给定一个整数数组和一个目标值,找出数组中两个数的下标,使得它们的和等于目标值。这可以通过嵌套循环实现。 ```python def two_sum(nums, target): for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: return [i, j] return None nums = [2, 7, 11, 15] target = 9 print(two_sum(nums, target)) # 输出 [0, 1] ``` ### 示例问题:判断是否存在重复元素 在编程竞赛中,嵌套循环也可以用于检查数组中是否存在重复元素。虽然这种方法的时间复杂度较高,但在数据量较小时仍然有效。 ```python def contains_duplicate(nums): for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] == nums[j]: return True return False nums = [1, 2, 3, 4, 5, 1] print(contains_duplicate(nums)) # 输出 True ``` ### 相关问题 1. 如何优化“两数之和”问题的解法,使其时间复杂度低于O()? 2. 嵌套循环在处理大规模数据时有哪些性能问题?如何解决这些问题? 3. 如何将嵌套循环的逻辑转换为递归实现? 4. 在编程竞赛中,如何判断何时使用嵌套循环以及何时使用其他算法策略? 5. 嵌套循环是否可以完全替代多层条件判断?两者之间有什么优缺点?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值