Python循环嵌套及用法 |
您所在的位置:网站首页 › if-else嵌套 › Python循环嵌套及用法 |
Python 不仅支持 if 语句相互嵌套,while 和 for 循环结构也支持嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,如for里面还有for,while里面还有while,甚至while中有for或者for中有while也都是允许的。 寻找规律写循环 循环嵌套的规律for循环可以简化程序中重复的代码。 for语句的格式如下: for i in range(重复次数): 下级代码 py for i in range(3): #外层循环变量 for j in range(i): #内层循环变量 print('up') print('walk') print('get')外循环变量i是一个变化的值,变化的规律是0,1,2,刚好 与print(‘up’)每次要被执行的次数一致。我们就可以通过外层 循环变量i,来控制内循环的循环次数,完成操作。 print()命令拓展end 是print()命令的一个参数,用来设定打印结果以什么结尾。 print(打印内容,end = 结尾内容 ) 省略参数end时,默认end = ‘\n’,\n是换行符,所以执行 print()命令会默认换行。我们可以把end设为其他字符串。 py print(1) print(2)省略end参数,打印默认换行。运行结果: 1 2 py print(1, end = '') print(2)让end等于空字符串, 打印时不会换行。运行结果: 12 py print(1, end = '*') print(2)让end等于星号*, 打印时会以*结尾。运行结果: 1*2 for循环嵌套的应用 打印图形py for i in range(4): for j in range(5): print('*', end = '') print()外循环:控制打印哪一行 内循环:打印一行中的每个星号 ***** ***** ***** ***** py for i in range(5): for j in range(i + 1): print('*', end = '') print()利用循环变量控制每行星号的个数 * ** *** **** ***** py for i in range(5): for j in range(i + 1): print('*', end = '') print() for i in range(4): for j in range(4 - i): print('*', end = '') print()分成上下2个三角形 * ** *** **** ***** **** *** ** * 循环嵌套中的continuecontinue语句可以结束当前一次循环,直接进入下一次循环。它的控制范围是有限的,只能控制一层循环。 py for i in range(4): print('next') for j in range(3): print('yellow') print('red') if i == 2: continue print('green')i=2 时,执行continue语句,跳过print(‘green’), 继续执行下一次外循环。 py for i in range(4): print('next') for j in range(3): print('yellow') if i == 1: continue print('red') print('green')i=1时,执行continue语句,跳过print(‘red’),继续执行下一次内循环。 内循环中的continue语句,只会结束当前的一次内循环,继续执行下一次内循环,不会影响到外循环中其他下级代码的执行。 循环嵌套中的break 遍历列表列表的索引是从0开始的。 遍历列表:把列表中的元素,从头到尾一个一个地取出来使用。 py data = ['X', 'W', 'Z'] for z in data: print(z)z的值是data列表中的元素。 循环嵌套中的break使用break语句可以结束循环。 在一个有多层循环嵌套的结构中,break的位置,决定了它能结束哪个循环。 py for j in range(3): for k in range(3): print('小王') break print('小王子') break print('你好')小王 小王子 你好 第一处break语句是内层for循环的下级代码,当程序 执行这个break语句时,只会结束内层for循环,继续执行print(‘小王子’) 第二处break语句是外层for循环的下级代码,当程序执 行这个break语句时,会结束外层for循环,继续执 行print(‘你好’)。 要分析出break会结束哪个循环,我们可以把每一层的循环结构看做一个整体,观察break语句,它 在哪一层,就会结束哪一层循环。 标志变量的使用可以使用一个标志变量flag,来记录不同的状态。 flag=0,表示列表中有字母E flag=1,表示列表中没有字母E py data = input().split() flag = 0 #初始化,没有字母E for d in data: print(d) if d == 'E': flag = 1 break print(flag)当条件成立时,表示列表中 有字母E,把flag设置为1, 再终止内层循环。 当输入为:G E Q时, 运行结果为: G E 1 输入为:G F Q时, 运行结果为: G F Q 0 综合应用在for循环嵌套中同时使用标志变量和break语句。 py flag = 0 for i in range(3): print('go') for j in range(4): if i == 1 and j == 2 print('Apple') flag = 1 break if flag == 1 break print('end')内循环:当i=1并且j=2时,打印Apple,把flag设置为1,再执行break,会结束内循环。 go go Apple end 外循环:当flag=1时,会执行break,结束外循环。 标志变量一般用来记录不同的状态。 break语句可以结束它所在的那个循环。 项目分析 说明每次运行程序,随机生成一个三位密码,用户猜出正确的密码即为成功。 用户可以多次输入,每当输入错误时,程序会分别对每一位数字给出提示,用户需要根据提示信息推测出正确的密码。 ![]() 生成三位的随机密码,每一位是0-9中的一个数字,三个数字各不相同。实现步骤: 创建列表,存储0-9 [‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’] 打乱列表 [‘8′,’1′,’3′,’5′,’6′,’0′,’9′,’4′,’7′,’2’] 组合密码 ‘813’代码实现: py import random #导入random库,才能使用shuffle()函数 numbers = ['0','1','2','3','4','5','6','7','8','9'] random.shuffle(numbers) #打乱列表numbers中的元素顺序 password = numbers[0] + numbers[1] + numbers[2]shuffle( )是random库中的函数,它可以让列表中的所有元素随机排列。 使用时先导入random库 import random random.shuffle(列表名) 判断输入是否正确生成密码以后,系统需要接收用户的输入,并判断输入的密码是否正确。 ![]() 代码实现 py import random numbers = ['0','1','2','3','4','5','6','7','8','9'] random.shuffle(numbers) password = numbers[0] + numbers[1] + numbers[2] while True: guess = input('请输入三位数密码:') if guess == password: print('密码正确') break输入正确时,break语句结束while循环。 错误提示信息用户输入错误时,需要针对每一位数字给出提示信息: 这一位数字正确,提示“正确”; 数字应该在密码的其他位置上,提示“在其他位置”; 数字不是密码中的任何一个数字,会提示“错误”。代码实现: py while True: guess = input('请输入三位数密码:') if guess == password: print('密码正确') break else: for i in range(3): if guess[i] == password[i]: print(guess[i], '正确') elif guess[i] in password: print(guess[i],'在其他位置') else: print(guess[i],'错误')判断数字属于哪种情况,并给出对应提示。 项目优化优化1:检查输入是否是三位数 py while True: guess = input('请输入三位数密码:') if len(guess) != 3: print('输入格式错误') continue输入以后,先判断输入,位数错误跳出本次循环,继续下一轮输入。 优化2:猜测次数限制,成功失败效果 py times = 5 unlock = 0 while times > 0: if guess == password: print('密码正确') unlock = 1 break程序最后,通过unlock的值判断是否解锁成功: py if unlock == 1: print('解锁成功!') print('^O^') else: print('解锁失败!') print('*_*') |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |