python中的循环

循环

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


#### 1.for 循环

  • 语法:

    for 变量 in 序列:

    ​ 循环体

    说明:

    for , in 关键字 固定写法

    变量 写一个变量名

    序列 容器数据型对应的数据,常见序列:字符串,列表,元组,字典,集合,迭代器,生成器,range。

    : 固定写法

    循环体 和for保存一个缩进的一条或者多条语句:就是需要重复执行的代码。

    执行过程:让变量去序列中取值,一个一个的取,直到取完为止,每取一次执行一次循环体。

    for循环的次数和序列中的元素的个数有关

    代码如下:


    for x in 'abc123':
       print(x, 'hello',end = ' ')
       
    #  a hello b hello c hello 1 hello 2 hello 3 hello 
    #x = 'a': print(x, 'hello') -> print('a', 'hello')
    #x = 'b': print(x, 'hello') -> print('b', 'hello')
    #...
    #x = '3': print(x, 'hello') -> print('3', 'hello')
    
    print('======用法1:产生0开始步长为1的数字序列======')
    num = 10
    for x in range(num):
        print(x)
    
    #======用法1:产生0开始步长为1的数字序列======
    #  0 1 2 3 4 5 6 7 8 9
    
    print('=======用法2:直接的控制循环次数========= ')
    for x in range(4):
        print('hello!',end = ' ')
    #  =======用法2:直接的控制循环次数========= 
    #a hello b hello c hello 1 hello 2 hello 3 hello
    
    print('=====================================')
    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, -3):
        print(x,end = ' ')
    # 20 17 14 11 8 5 2
    
    #练习1:打印100以内所有的偶数
    for x in range(100):
        if x % 2 == 0:
            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 
    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, sep= '' , end = '')
    # 103 113 123 133 143 153 163 173 183 193
    for x in range(103, 201, 10):
        print(x, sep= '' ,end = ' ')
    # 103 113 123 133 143 153 163 173 183 193
    
    # 练习3:打印所有的水仙花数
    for num in range(100, 1000):
        ge = num % 10
        shi = num // 10 % 10
        bai = num // 100
        if ge**3 + shi**3 + bai**3 == num:
            print(num,sep= '' ,end = ' ')
    #  153 370 371 407 
    
  • range函数: 产生指定范围的数字序列

​ range(N) - 产生[0,N)的数字序列,其中步长是1

​ range(M,N) - 产生[M,N)的数字序列, 步长为1

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

​ 代码如下:


for x in range(100):
   	print(x)

for i in range(10):
   	print('hello!')
     	
print('===============')
for x in range(10,20,2):
   	print(x)

print('===============')
for x in range(10,0,-3):
   	print(x)

print('===============')
for num in range(100,1000):
   	ge = num % 10
	shi = num // 10 % 10
	bai = num // 100
	if ge**3 + shi**3 + bai**3 == num:
       print(num)
    
print('================')
for x in range(0,100,2):
   	print(x)
   
   num = 0
   for x in range(1,101):
   	num += x
 print('1+2+3+...+100:',num)
#1+2+3+...+100: 5050

   num1 = 0
    for num in range(100,1000):
	ge = num % 10
	shi = num // 10 % 10
   	bai = num // 100
if ge**3 + shi**3 + bai**3 == num:
    num1 += num
print('所有的水仙花数:',num1)
#所有的水仙花数: 1301

   num = 0
   for x in range(0,100,6):
   	num += 1
   print('100以内偶数的个数:',num)
   #100以内偶数的个数: 17
2.while循环
  • 语法:

    while 条件语句:

    ​ 循环体

    说明:

    while 关键字 固定写法

    条件语句 任何有结果的表达式(只有赋值语句不行)

    : 固定写法

    循环体 和while保持一个缩进的一条或者多条语句

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

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

    while和for的选择

    • for循环:循环次数确定的时候使用
    • while循环:循环次数不确定的时候使用(程序员在写代码的时候没有办法通过任何方式来确定循环次数)

    代码如下:


    num = 10
    while num > 0:
    	print('hello',sep = ' ', end = ' ')
    	num -= 1
    
    #hello hello hello hello hello hello hello hello hello hello 
    
    num = input('请输入:')
    while num != '0':
    	num = input('请输入:')
    #请输入:123
    #请输入:123
    #请输入:0
    num = ''
    while num != '0':
    	num = input('请输入:')	
    
3.continue和break
  • continue
  • 只能出现在循环体中

  • continue 结束一次循环、结束当次循环

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

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

#### 4.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 ======
    
    for x in range(10):
        if x == 5 or x == 8:
            continue
        print(x, end=' ')
    #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, end = ' ')
        if x == 3:
            break
    #   0 1 2 3
    
  • 有了break的while循环

  • while True:

    • 需要重复执行的操作

    • if 循环结束的条件:

    • break

    代码如下:

while True:
    value = input('请输入:')
    if value == '0':
        break
#请输入:22
#请输入:0

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

基础题

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

    代码如下:

    # 方法1
    for i in range(0,101):
        if i % 3 == 0:
            print(i,end = ' ,')
    # 0 ,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
    x = 0
    while  x <= 100:
        if x % 3 == 0:
            print(x,end = ' ')
        x += 1
    
    # 0 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 
    for num in range(0, 100, 3):
        print(num) 
    num = 0   # 保存3的倍数,默认是0
    
    while True:
     # 打印3的倍数
     	print(num)
     	num += 3
        if num >= 100:
         	break      
    
  2. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    代码如下:

    for x in range(100,200):
        ge = x % 100
        shi = x %100//10
        if shi % 3 == 0 or ge % 3 == 0:
            print(x, end = ' ')
    #  100 101 102 103 104 105 106 107 108 109 112 115 118 121 124 127 130 131 132 133 134 135 136 137 138 139 142 145 148 151 154 157 160 161 162 163 164 165 166 167 168 169 172 175 178 181 184 187 190 191 192 193 194 195 196 197 198 199 
    
    i = 100
    while 100 <= i < 200:
        if shi % 3 == 0 or ge % 3 == 0:
            print (i,end = ' ')
        i += 1
    #  100 101 102 103 104 105 106 107 108 109 112 115 118 121 124 127 130 131 132 133 134 135 136 137 138 139 142 145 148 151 154 157 160 161 162 163 164 165 166 167 168 169 172 175 178 181 184 187 190 191 192 193 194 195 196 197 198 199
    for num in range(100, 200):
     	if num % 10 % 3 == 0 or num // 10 % 10 % 3 == 0:
        	 print(num)
        	 
     num = 100
     while True:
     	if num % 10 % 3 == 0 or num // 10 % 10 % 3 == 0:
         	print(num)
     	num += 1
    		if num >= 200:
         		break
     
    
  3. 统计100~200中十位数是5的数的个数

    代码如下:

    num1 = 0
    for num in range(100,200):
        shi = num % 100 // 10
        if shi == 5:
            num1 += 1
    print(num1)
    # 10
    
  4. 打印50~150中所有能被3整除但是不能被5整除的数

    代码如下:

    i = 0
    for i in range(50,150):
        if i % 3 == 0 and i % 5 != 0:
            print(i,end = ' ')
    #  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
    
    for num in range(51,150,3):
     	if num % 5 != 0:
        	 print(num)
    for i in range(50,150,3):
     	if i % 5 == 0:
         	continue
     print(num)
    
    
  5. 计算50~150中所有能被3整除但是不能被5整除的数的和

    代码如下:

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

进阶题

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

    代码如下:

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

    代码如下:

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

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

    代码如下:

    num = int (input('输入任意一个正整数:'))
    i  = 0
    while True:
    	num //=10
        i  += 1
        if   i == 0:
          	  break
    print(i)
    
  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

    ⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。

    代码如下:

    for num in range(100, 1000):
        ge = num % 10
        shi = num // 10 % 10
        bai = num // 100
        if ge**3 + shi**3 + bai**3 == num:
            print(num,end = ' ')
    #  153 370 371 407  
    

挑战题

  1. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
    代码如下:
  for x in range(2, int(num ** 0.5) + 1):
 	 if num % x == 0:
     	 print(num, '不是素数')
      break
   else:
print(num, '是素数')
  1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
    代码如下:

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

    代码如下:

     for i in range(1,10):
        a_i = []
        for j in range(1,10):
            a = f"{i}x{j}={i*j}"
            a_i.append(a)
        print("\n")
        for ax in a_i:
            print(ax,sep = "\t",end = "\t")
    #1x1=1	1x2=2	1x3=3	1x4=4	1x5=5	1x6=6	1x7=7	1x8=8	1x9=9	
    
    #2x1=2	2x2=4	2x3=6	2x4=8	2x5=10	2x6=12	2x7=14	2x8=16	2x9=18	
    
    #3x1=3	3x2=6	3x3=9	3x4=12	3x5=15	3x6=18	3x7=21	3x8=24	3x9=27	
    
    #4x1=4	4x2=8	4x3=12	4x4=16	4x5=20	4x6=24	4x7=28	4x8=32	4x9=36	
    
    #5x1=5	5x2=10	5x3=15	5x4=20	5x5=25	5x6=30	5x7=35	5x8=40	5x9=45	
    
    #6x1=6	6x2=12	6x3=18	6x4=24	6x5=30	6x6=36	6x7=42	6x8=48	6x9=54	
    
    #7x1=7	7x2=14	7x3=21	7x4=28	7x5=35	7x6=42	7x7=49	7x8=56	7x9=63	
    
    #8x1=8	8x2=16	8x3=24	8x4=32	8x5=40	8x6=48	8x7=56	8x8=64	8x9=72	
    
    #9x1=9	9x2=18	9x3=27	9x4=36	9x5=45	9x6=54	9x7=63	9x8=72	9x9=81	
    
  3. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

    
    	for big in range(100//3 + 1):
            for middle in range(50):
                small = 100 - big - middle
                if big * 3 + middle * 2 + small/2 == 100:
                print(big,middle,small)
    
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 Python ,可以使用 for 循环和 while 循环来实现循环。 for 循环的语法如下: ``` for 变量 in 序列: # 循环体 ``` while 循环的语法如下: ``` while 条件: # 循环体 ``` 例如,下面的代码使用 for 循环来遍历一个列表: ``` fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: print(fruit) ``` 输出: ``` apple banana cherry ``` 例如,下面的代码使用 while 循环实现了计数器功能: ``` count = 0 while count < 5: print(count) count += 1 ``` 输出: ``` 0 1 2 3 4 ``` ### 回答2: 在Python循环可以使用`for`和`while`语句来实现。 1. `for`循环: `for`循环是用于遍历一个可迭代对象(例如列表、元组、字符串等)的元素。语法如下: ```python for 变量 in 可迭代对象: 循环体代码 ``` 其,`变量`用于接收可迭代对象的每个元素,`可迭代对象`是一个序列,例如列表、元组、字符串等。当循环开始时,会依次遍历可迭代对象的元素,并执行循环体代码。 2. `while`循环: `while`循环会在给定的条件为真时重复执行循环体代码。语法如下: ```python while 条件: 循环体代码 更新条件 ``` 其,`条件`是一个判断语句,当条件为真时,循环体代码会被重复执行。循环体代码执行完后,会更新条件,然后再次判断条件的真假。如果条件仍为真,则重复执行循环体代码,直到条件为假时,循环结束。 无论是`for`循环还是`while`循环,都可以使用`break`关键字来提前结束循环,或使用`continue`关键字跳过当前循环的剩余代码,继续执行下一次循环循环Python非常重要的控制结构之一,可以根据实际的需求选择合适的循环语句,来进行迭代和重复执行代码。 ### 回答3: 在Python循环是一种重复执行某段代码的结构。Python提供了两种主要的循环方式:for循环和while循环。 1. for循环: for循环用于按照特定的次数或迭代一个集合来执行代码。它的基本语法如下: ``` for 变量 in 序列: # 执行代码块 ``` 其,变量代表在每次迭代从序列取出的元素,序列可以是列表、元组、字符串等。在每次循环,代码块都会被执行,直到序列的所有元素被遍历完。 2. while循环: while循环用于在满足特定条件时重复执行代码。它的基本语法如下: ``` while 条件: # 执行代码块 ``` 在每次循环开始之前,都会先判断条件是否满足。只要条件为真,循环就会一直执行下去。当条件为假时,循环停止。 需要注意的是,无论是for循环还是while循环,都需要在代码块内部添加适当的条件或控制语句来控制循环的结束条件,以避免无限循环的发生。例如,可以使用break语句来跳出循环或使用continue语句来跳过当前循环的剩余部分。 总结起来,Python循环可以通过for循环和while循环来实现。通过合理地使用循环结构,可以方便地处理需要重复执行的任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值