IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> day4-Python循环 -> 正文阅读

[Python知识库]day4-Python循环

Python循环

1. for循环

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

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

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

2.range函数

range函数:产生指定范围的数字序列

1)range(N) - 产生[0, N)的数字序列,步长是1
2)range(M, N) - 产生[M, N)的数字序列,步长是1
3)range(M, N, step) - 产生[M, N)的数字序列,步长为step指定的值

for x in range(10):
    print(x, end=' ')

运行结果:
0 1 2 3 4 5 6 7 8 9 
for x in range(4):
    print('hello!', end=' ')

运行结果:
hello! hello! hello! hello!
for x in range(10, 20):
    print(x, end=' ')

运行结果:
10 11 12 13 14 15 16 17 18 19
for x in range(-10, 10):
    print(x, end=' ')

运行结果:
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9
for x in range(10, 20, 2):
    print(x, end=' ')

运行结果:
10 12 14 16 18 
for x in range(20, 0, -1):
    print(x, end=' ')

运行结果:
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 

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

for x in range(0, 100, 2):
    print(x, end=' ')

运行结果:
0 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:打印100 ~ 200以中所有个位数是3的数

for x in range(100, 201):
    if x % 10 == 3:
        print(x, end=' ')
        
运行结果:
103 113 123 133 143 153 163 173 183 193

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

for x in range(100, 1000):
    x_ge = x % 10
    x_shi = x % 100 // 10
    x_bai = x // 100
    if x_ge ** 3 + x_shi ** 3 + x_bai ** 3 == x:
        print(x, end=' ')
        
运行结果:
153 370 371 407

练习4:统计100以内偶数的个数

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

运行结果:
100以内偶数的个数: 50

练习5:统计100以内能被3整除的偶数个数

count_2 = 0
for x in range(0, 100, 6):
    # if x % 6 == 0:
    count_2 += 1
print('100以内能被3整除的偶数个数:', count_2)

运行结果:
100以内能被3整除的偶数个数: 17

练习6:计算1+2+3+…+100的和

sum3 = 0
for x in range(1, 101):
    sum3 += x
print('1+2+3+...+100=', sum3)

运行结果:
1+2+3+...+100= 5050

练习7:计算所有水仙花的和

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

运行结果:
所有水仙花的和: 1301

3.while循环

1)while循环

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

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

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

练习1:使用while循环打印10个 hello

x = 0
while x < 10:
    print('hello', end=' ')
    x += 1

运行结果:
hello hello hello hello hello hello hello hello hello hello

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

2)while和for的选择
for循环:循环次数确定的时候使用
while循环:循环次数不确定的时候(程序员在写代码的时候没有办法确定通过任何方式来确定循环次数)
练习2:提示用户不断输入内容,直到输入的数据是0为止

i = '1'
while i != '0':
    i = input('请输入数字:')

运行结果:
请输入数字:2
请输入数字:0

Process finished with exit code 0

4.continue和break

1)continue和break

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

①continue - 结束一次循环/结束当次循环
如果在执行循环体的时候遇到了continue,那么当次循环结束,直接进入下一次循环

②break - 结束整个循环
如果在执行循环体的时候遇到了break,整个循环直接结束

for x in range(4):
    print('=====')
    continue
    print('+++++')
    print('-----')

运行结果:
=====
=====
=====
=====
for x in range(10):
    if x == 5 or x == 8:
        continue
    print(x)
    
运行结果:
0
1
2
3
4
6
7
9
for x in range(4):
    print('=====')
    break
    print('+++++')
    print('-----')
print('end')

运行结果:
=====
end
for x in range(10):
    print(x)
    if x == 3:
        break

运行结果:
0
1
2
3

2)有了break的while循环

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

while True:
    value = input('请输入:')
    if value == '0':
        break
        
运行结果:
请输入数字:2
请输入数字:0

Process finished with exit code 0

5.else

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

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

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

for x in range(4):
    print(x, '=====')
    if x == 2:
        break
else:
    print('else')

运行结果:
0 =====
1 =====
2 =====

练习题

基础题

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

    # 使用for循环:
    print('0~100内所有3的倍数:')
    for x in range(1, 100):
        if x % 3 == 0:
            print(x, end=' ')
            
    运行结果:
    0~100内所有3的倍数:
    3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
    
    # 使用while循环:
    print('0~100内所有3的倍数:')
    num = 1
    while num < 100:
        if num % 3 == 0:
            print(num, end=' ')
        num += 1
    
    运行结果:
    0~100内所有3的倍数:
    3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
    
  2. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    # 使用for循环:
    print('100~200内个位数或者十位数能被3整除的数:')
    for x in range(100, 200):
        ge = x % 10
        shi = x // 10 % 10
        if ge % 3 == 0 or shi % 3 == 0:
            print(x, end=' ')
    
    运行结果:
    100~200内个位数或者十位数能被3整除的数:
    100 101 102 103 104 105 106 107 108 109 110 113 116 119 120 123 126 129 130 131 132 133 134 135 136 137 138 139 140 143 146 149 150 153 156 159 160 161 162 163 164 165 166 167 168 169 170 173 176 179 180 183 186 189 190 191 192 193 194 195 196 197 198 199
    
    # 使用while循环:
    print('100~200内个位数或者十位数能被3整除的数:')
    x = 100
    while x < 200:
        ge = x % 10
        shi = x // 10 % 10
        if ge % 3 == 0 or shi % 3 == 0:
            print(x, end=' ')
        x += 1
        
    运行结果:
    100~200内个位数或者十位数能被3整除的数:
    100 101 102 103 104 105 106 107 108 109 110 113 116 119 120 123 126 129 130 131 132 133 134 135 136 137 138 139 140 143 146 149 150 153 156 159 160 161 162 163 164 165 166 167 168 169 170 173 176 179 180 183 186 189 190 191 192 193 194 195 196 197 198 199
    
  3. 统计100~200中十位数是5的数的个数

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

    print('50~150中所有能被3整除但是不能被5整除的数:')
    for x in range(50, 151):
        if x % 3 == 0 and x % 5 != 0:
            print(x, end=' ')
    
    运行结果:
    50~150中所有能被3整除但是不能被5整除的数:
    51 54 57 63 66 69 72 78 81 84 87 93 96 99 102 108 111 114 117 123 126 129 132 138 141 144 147
    
  5. 计算50~150中所有能被3整除但是不能被5整除的数的和

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

进阶题

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

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

    count = 0
    for x in range(100):
        ge = x % 10
        if ge == 2 and x % 3 == 0:
            count += 1
    print('100以内个位数是2并且能够被3整除的数的个数:', count)
    
    运行结果:
    100以内个位数是2并且能够被3整除的数的个数: 3
    
    
  3. 输入任意一个正整数,求他是几位数?

    注意: 这儿不能使用字符串,只能用循环

    num = int(input('请输入正整数:'))
    
    x = 1
    count =0
    while True:
        if 0 < num < 10:
            count = 1
            break
        elif num == 10:
            count = 2
            break
        elif num > x:
            x *= 10
            count += 1
        else:
            break
    
    print(count)
    
  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字?方和等于该数本身。例如:153是

    ?个?仙花数,因为 13 + 53 + 33 等于 153。

    for x in range(100, 1000):
        x_ge = x % 10
        x_shi = x % 100 // 10
        x_bai = x // 100
        if x_ge ** 3 + x_shi ** 3 + x_bai ** 3 == x:
            print(x, end=' ')
            
    运行结果:
    153 370 371 407 
    

挑战题

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

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

    n = int(input('请输入要知道值的第n个数:'))
    n_2 = 0
    n_1 = 1
    current = 1
    for x in range(2, n+1):
        current = n_2 + n_1
        n_2 = n_1
        n_1 = current
    print('第',n ,'个数的值是:',current)
    
  3. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

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

    for x in range(0,101):
        for y in range(0,101):
            for z in range(0, 101):
                if x +y+ z == 100 and 3*x + 2*y + (1/2)*z == 100:
                    print(x, y, z)
                    
    运行结果:
    2 30 68
    5 25 70
    8 20 72
    11 15 74
    14 10 76
    17 5 78
    20 0 80
    
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:14:17  更:2021-07-16 11:17:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/25 15:00:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计