for循环
for循环与while循环的区别
- for循环是可控的,while循环一不小心就会造成死循环
- for循环不需要条件,while循环需要条件
# 打印一个列表 hobby_list = ('raeding','wirth','cooking','fishing',1,3,5,7,9) count = 0 while count < len(hobby_list): # 使用的是while循环实现 print(hobby_list[count]) count += 1
raeding wirth cooking fishing 1 3 5 7 9
hobby_list = ('raeding','wirth','cooking','fishing',1,3,5,7,9) for i in hobby_list: # 使用for循环实现 print(i)
raeding wirth cooking fishing 1 3 5 7 9
相较于上面两个代码,我们可以发现while循环实现列表打印比较繁琐,而for循环只需要两行就解决了
for i in range(6): # 相当于for i in range(0,6) print(i)
0 1 2 3 4 5
补充:range()函数顾头不顾尾,意思就是list(range(1,4))相当于list = [1,2,3],没有4
for+break
跳出本层for循环
基本语法
''' for 条件: code1 code2 if 条件: break code3 …… '''
for i in range(8): if i == 6: break # 当i = 6 时,跳出for循环 print(i)
0 1 2 3 4 5
for+continue
基本语法
跳出本次循环,继续进行下面的循环
''' for 条件: code1 code2 if 条件: continue code3 …… '''
for i in range(5): if i == 3: print(' ') continue # 当i = 3 时,不执行本次循环,然后继续后面的循环 print(i)
0 1 2 4
for……else
定义:如果for循环没有被break掉,则执行else内部代码
for num in 'abcdefghijklmno': if num == 'j': break print(num,end = ' ') else: print('for循环没有被break中断掉')
a b c d e f g h i
for循环嵌套
在while循环中有嵌套,同样的,for循环同样有嵌套
# 九九乘法表 for i in range(1,10): for j in range(1,i+1): print(f'{i}*{j}={i*j}',end = ' ') print('')
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
秀一波操作
1. 使用for循环实现loading......
import time print('loading',end='') for i in range(20): print('.',end='') time.sleep(0.8)
loading....................
2. 实现一个登录功能
name = 'hades' pwd = 'zzp' function_list = {0: 'reading', 1: 'writing', 2: 'cooking',3:'fishing'} for count in range(3): username = input('>>>usrename: ') password = input('>>>password: ') re_password = input('>>>re_password: ') if username != name or password != pwd: print('用户名或密码错误') else: if password != re_password: print('两次密码不一致') else: print('登录成功') while True: print(f'请选择功能:{function_list}') choice = input('>>>choice:') if choice == 'q': count = 3 print('Logout') break choice = int(choice) print(f'你已经选择功能:{function_list[choice]}')
>>>usrename: hades >>>password: zzp >>>re_password: zzp 登录成功 请选择功能:{0: 'reading', 1: 'writing', 2: 'cooking', 3: 'fishing'} >>>choice:0 你已经选择功能:reading 请选择功能:{0: 'reading', 1: 'writing', 2: 'cooking', 3: 'fishing'} >>>choice:3 你已经选择功能:fishing 请选择功能:{0: 'reading', 1: 'writing', 2: 'cooking', 3: 'fishing'} >>>choice:q Logout
练习题
1. 打印1-100之间的偶数:
for num in range(1,100): if (num % 2) == 0: print(num,end = ' ')
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98
2. 猜年龄游戏升级版,有以下三点要求:
1. 允许用户最多尝试3次 2. 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 3. 如何猜对了,就直接退出
age = '35' print('------------俺们来玩一个猜年龄游戏--------------\n') guess = 'Y' while guess == 'Y' or guess == 'y': count = 0 while count < 3: guess = input('请输入你猜的年龄:') if guess == age: print('恭喜你猜对啦,真厉害!\n') break elif guess < age: print('猜小了,不要气馁,再来一次~') else: print('猜大了,再接再厉,restare~') time = 2 - count if time > 0: print(f'你还有{time}次机会哦!') else: print('Game Over') count += 1 guess = input('是否还想再来一次呢(是请按Y/否请按N):') print('----------------欢迎下次再来。------------------')
------------俺们来玩一个猜年龄游戏-------------- 请输入你猜的年龄:2 猜小了,不要气馁,再来一次~ 你还有2次机会哦! 请输入你猜的年龄:35 恭喜你猜对啦,真厉害! 是否还想再来一次呢(是请按Y/否请按N):y 请输入你猜的年龄:34 猜小了,不要气馁,再来一次~ 你还有2次机会哦! 请输入你猜的年龄:47 猜大了,再接再厉,restare~ 你还有1次机会哦! 请输入你猜的年龄:3 猜小了,不要气馁,再来一次~ Game Over
3. 打印如下所示金字塔:
''' # max_level=5 * # current_level=1,空格数=4,*号数=1 *** # current_level=2,空格数=3,*号数=3 ***** # current_level=3,空格数=2,*号数=5 ******* # current_level=4,空格数=1,*号数=7 ********* # current_level=5,空格数=0,*号数=9 # 数学表达式 空格数 = max_level-current_level *号数 = 2*current_level-1 '''
max_level = 9 for current_level in range(1,max_level + 1): space_num = max_level-current_level star_num = 2*current_level-1 print(' '*space_num + '*'*star_num)
* *** ***** ******* ********* *********** ************* *************** *****************
来源:https://www.cnblogs.com/Hades123/p/10821591.html