目录
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('------------俺们来玩一个猜年龄游戏--------------
')
guess = 'Y'
while guess == 'Y' or guess == 'y':
count = 0
while count < 3:
guess = input('请输入你猜的年龄:')
if guess == age:
print('恭喜你猜对啦,真厉害!
')
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)
*
***
*****
*******
*********
***********
*************
***************
*****************