学习Python的D4循环

循环

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

一、for循环

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

说明:
forin:	关键字,固定写法
变量:	   变量名(定没定义都可以)
序列:    容器型数据类型对应的数据,常见:字符串,列表,字典,元祖,集合,迭代器,range等
:   :   固定写法
循环体 :  和for保持一个缩进的一条和多条语句

range函数

产生指定范围的数字序列

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

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

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

    • print('======用法1:产生0开始步长为1的数字序列======')
      num = 10
      for x in range(num):
          print(x)
      
    • print('=======用法2:直接的控制循环次数========= ')
      for x in range(4):
          print('hello!')
      
    • print('=====================================')
      for x in range(10, 20):
          print(x)
      
    • print('=====================================')
      for x in range(10, 20, 2):
          print(x)
      

二、while循环

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

执行过程:
先判断条件语句是否为True,如果为True就执行循环体,执行完循环体再判断条件是否为True, 如果为True就再执行循环体
...以此类推,当条件语句结果为False循环直接结束。
  • while循环控制循环次数的原则:让条件经历过指定次数后由True变成False

三、for和while的选择

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

四、continue和break

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

    • continue - 结束一次循环/结束当次循环
      如果在执行循环体的时候遇到了continue,那么当次循环结束,直接进入下一次循环
    • break - 结束整个循环
      如果在执行循环体的时候遇到了break,整个循环直接结束
    • for x in range(10):
          if x == 5 or x == 8:
              continue
          print(x)
      
    • for x in range(10):
          print(x)
          if x == 3:
              break
      
  • 2.有了break的while循环

    • while True:
          需要重复执行的操作
          if 循环结束的条件:
              break
      
    • while True:
          value = input('请输入:')
          if value == '0':
              break
      
  • 3.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')
      

作业

基础题

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

    for x in range(0, 101, 3):
        if x != 0:
            print(x)
            
    num = 0        
    while True:
        print(num)
        num += 3
        if num >= 100:
            break
    
  2. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    for x in range(100, 201):
        if (x % 10 % 3 == 0 and x % 10 != 0) or (x // 10 % 10 % 3 == 0 and x // 10 % 10 != 0):
            print(x)
            
    num = 100
    while True:
        if(x % 10 % 3 == 0 and x % 10 != 0) or (x // 10 % 10 % 3 == 0 and x // 10 % 10 != 0):
            print(num)
        num +=1
        if num > 200:
            break
    
  3. 统计100~200中十位数是5的数的个数

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

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

    a = 0
    for x in range(50, 151, 3):
        if x % 5 != 0:
            a += x
    print(a)
    

进阶题

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

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

    count = 0
    for x in range(0, 101):
        a = x % 10 == 2
        b = x % 3 == 0
        if a and b:
            count += 1
    print(count)
    
  3. 输入任意一个正整数,求他是几位数?

    num = int(input('请输入正整数:'))
    x = 1
    while num // 10 != 0:
        x += 1
        num // = 10
    print(x, '位数')
    

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

  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是 一个仙花数,因为 1³ + 5³ + 3³ 等于 153。

    for x in range(100, 1000):
        if (((x % 10) ** 3) + ((x // 10 % 10) ** 3) + ((x // 100) ** 3)) == x:
            print(x)
    

挑战题

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

    num = 31
    for x in range(2, num):
    	if num % x == 0:
    		print('bushi')
    		continue
    else:
    	print('shi')
    
  2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

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

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

    for big in range(100 // 3 +1):
        for mid in range(50):
            sml = 100 - big - mid
            if big + mid + sml / 2 = 100:
         	print(big, mid, sml)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值