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