Python教程

python循环

本文主要是介绍python循环,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python循环

循环 让代码重复执行(代码写一遍,运行的时候可以执行多次)

1、for循环

for循环

语法:
for 变量 in 序列:
循环体

说明:
for、in ( 关键字,固定写法)
变量 (写一个变量名(可以是已经定义过的,也可以没有定义过的))
序列 (容器型数据类型对应的数据,常见序列:字符串、列表、元组、字典、集合、迭代器、生成器、range)
: (固定写法)
循环体(和for保持一个缩进的一条或者多条语句;就是需要重复执行的代码)

执行过程:
让变量去序列中取值,一个一个的取,取完为止,每取一个执行一次循环体
for循环的循环次数和序列中元素的个数有关

for x in "123456":
    print(x, 'zzz')
'''
1 zzz
2 zzz
3 zzz
4 zzz
5 zzz
6 zzz
'''

range函数

产生指定范围的数字序列

1) range(N) 产生【0,n)的数字序列,其中步长是1

用法1:产生0开始步长为1的数字序列

for x in range(10):
    print(x)
'''
0
1
2
3
4
5
6
7
8
9
'''

用法2:直接控制循环次数

for x in range(5):
    print('zzz')
'''
zzz
zzz
zzz
zzz
zzz
'''

2) range(M,N) 产生【M,N)的数字序列,步长1

for x in range(10, 20):
    print(x)
'''
10
11
12
13
14
15
16
17
18
19
'''

3) range(M,N,step) 产生【M,N)的数字序列,步长为step指定值

for x in range(10, 30, 3):
    print(x)
'''
10
13
16
19
22
25
28
'''

练习1:打印100以内所有偶数

# 方法1:
for x in range(0, 100, 2):
    print(x)
# 方法2:
for x in range(100):
    if x % 2 == 0:
        print(x)

练习2:打印100~200中所有个位数是3的数

# 方法1:
for x in range(103, 200, 10):
    print(x)
# 方法2:
for x in range(100, 200):
    if x % 10 == 3:
        print(x)

练习3:打印所有的水仙花数

for x in range(100, 1000):
    if ((x // 100) ** 3 + (x % 100 // 10) ** 3 + (x % 10) ** 3) == x:
        print(x)
'''
153
370
371
407
'''

2、两个套路

1、统计100以内偶数的个数

i = 0
for x in range(0, 100, 2):
    i += 1
print('100以内偶数的个数', i)
'''
100以内偶数的个数 50
'''

2、统计100以内能被3整除的偶数的个数

# 方法1:
i = 0
for x in range(0, 100, 3):
    if x % 2 == 0:
        i += 1
print('能被3整除的偶数的个数', i)
# 方法2:
i = 0
for x in range(0, 100, 6):
    i += 1
print('能被3整除的偶数的个数', i)
'''
能被3整除的偶数的个数 17
能被3整除的偶数的个数 17
'''

3、计算1+2+3+…+100的和

i = 0
for x in range(1, 101):
    i += x
print('1+2+3+...+100的和', i)
'''
1+2+3+...+100的和 5050
'''

4、计算所有水仙花数的和

i = 0
for x in range(100, 1000):
    if ((x // 100) ** 3 + (x % 100 // 10) ** 3 + (x % 10) ** 3) == x:
        i += x
print('所有水仙花数的和', i)
'''
所有水仙花数的和 1301
'''

3、while循环

while循环

语法:
while 条件语句:
循环体

说明:
while (关键字,固定写法)
条件语句 ( 任何有结果的表达式(只有赋值语句不行))
: (固定写法)
循环体 (和while保持一个缩进的一条或者多条语句,需要重复执行代码)

执行过程:
先判断条件语句是否为True,如果为True就执行循环体,执行完循环体再判断条件是否为Ture,如果为Ture就再执行循环体,…,以此类推,当条件语句结果为False循环直接结束。

while循环控制循环次数的原则:让条件经历过指定次数后由Ture变成False

i=0
while i<5:
    i+=1
    print('hello')
'''
hello
hello
hello
hello
hello
'''

while和for的选择

1)for循环:循环次数确定时使用

2)while循环:循环次数不确定时使用(程序员写代码时没有办法获知循环次数)

练习:通过提示,让一个用户输入0,结束执行

i=int(input('请输入:'))
while i!=0:
    i=int(input('请输入:'))
'''
请输入:9
请输入:8
请输入:7
请输入:0
'''

4、循环关键字

continue和break

continue和break只能出现在循环体内

1)continue (结束一次循环/结束当此循环)

如果在执行循环体的时候遇到了continue,当此循环结束,直接进入下次循环

2)break (结束整个循环)

如果在执行循环体的时候遇到了break,循环结束

for x in range(10):
    if x==8 or x==5:
        continue
    print(x)
'''
0
1
2
3
4
6
7
9
'''
for x in range(10):
    if x==8 or x==5:
        break
    print(x)
'''
0
1
2
3
4
'''

有了break的while循环

while Ture:
需要重复执行的操作
if 循环结束的条件:
break

while True:
    x = input('请输入')
    if x=='0':
        break
'''
请输入9
请输入8
请输入7
请输入0
'''

else

完整的for循环
for 变量 in序列:
循环体
else:
代码段

完整的while循环
while 条件语句:
循环体
else:
代码段

else结构的存在不影响原来的循环执行,当循环自然死亡else后面的代码段会执行,如果是因为遇到break结束,则else不执行

for x in range(4):
    print('11111',x)
else:
    print('end')
'''
11111 0
11111 1
11111 2
11111 3
end
'''
for x in range(4):
    print('11111',x)
    if x==2:
        break
else:
    print('end')
'''
11111 0
11111 1
11111 2
'''

练习

基础题

  1. 使用for和while循环输出 0~100内所有3的倍数。

    # for
    for x in range(0,100,3):
        print(x)
    # while
    i = 0
    while i < 100:
        print(i)
        i += 3
    
  2. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    # for
    for x in range(100, 200):
        if (x%10%3==0 or x//10%10%3==0):
            print(x)
    # while
    i = 100
    while i < 200:
        if i % 10 % 3 == 0 or i // 10 % 10 % 3 == 0:
            print(i)
        i += 1
    
  3. 统计100~200中十位数是5的数的个数

    i=0
    for x in range(100, 200):
        if x//10%10/5==1:
            i += 1
    print('100~200中十位数是5的数的个数',i)
    '''
    100~200中十位数是5的数的个数 10
    '''
    
  4. 打印50~150中所有能被3整除但是不能被5整除的数

    for x in range(50, 150):
        if x%3==0 and x%5!=0:
            print(x)
    
  5. 计算50~150中所有能被3整除但是不能被5整除的数的和

    i=0
    for x in range(50, 150):
        if x%3==0 and x%5!=0:
            i+=x
    print('50~150中所有能被3整除但是不能被5整除的数的和',i)
    '''
    50~150中所有能被3整除但是不能被5整除的数的和 2682
    '''
    

进阶题

  1. 使用循环计算1*2*3*4*...*10的结果。

    i = 1
    for x in range(1, 11):
        i *= x
    print('1*2*3*4*...*10`的结果', i)
    
  2. 统计100以内个位数是2并且能够被3整除的数的个数。

    i = 0
    for x in range(100):
        if x%10/2==1 and x%3==0:
            i+=1
    print('100以内个位数是2并且能够被3整除的数的个数', i)
    '''
    100以内个位数是2并且能够被3整除的数的个数 3
    '''
    
  3. 输入任意一个正整数,求他是几位数?注意: 这儿不能使用字符串,只能用循环

    x = int(input('输入任意一个正整数'))
    n = 0
    while x!=0:
        x //=10
        n += 1
    print(n)
    
  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是 ⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。

    for x in range(100, 1000):
        if ((x // 100) ** 3 + (x % 100 // 10) ** 3 + (x % 10) ** 3) == x:
            print(x)
    '''
    153
    370
    371
    407
    '''
    

挑战题

  1. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

    num = 11
    # 方法1
    for x in range(2, num):
        if num % x == 0:
            print('不是素数')
            break
    else:
        print('是素数')
    # 方法2
    for x in range(2,int(num**0.5)+1):
    	if num % x == 0:
            print('不是素数')
            break
    else:
        print('是素数')
    
  2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

    a = 1
    b = 1
    n = int(input("输入"))
    if n == 1 or n == 2:
        print(1)
    else:
        for x in range(n - 3):
            a, b = b, a + b
        print(a + b)
    
  3. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    for i in range(1,10):
        for j in range(1,i+1):
            print(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 
    '''
    
  4. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

    for x in range(1, 34):
        for y in range(1, 51):
            for z in range(100):
                if 3 * x + 2 * y + z / 2 == 100 and x + y + z == 100:
                    print("大马有", x, "中马有", y, "小马有", z)
    '''
    大马有 2 中马有 30 小马有 68
    大马有 5 中马有 25 小马有 70
    大马有 8 中马有 20 小马有 72
    大马有 11 中马有 15 小马有 74
    大马有 14 中马有 10 小马有 76
    大马有 17 中马有 5 小马有 78
    '''
    
这篇关于python循环的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!