day3_循环结构

总结

循环结构
  • 1.for循环

    • 语法:

      ​```
      for 变量 in 序列:
      	循环体
      ​```
      
    • 说明:

      for, in - 关键字,固定写法

      变量 - 变量名(可以是没有定义过的变量的变量名,也可以是定义过的变量的变量名)

      序列 - 容器型数据类型的数据,常见的序列:字符串, 列表, 元组, 字典, 集合, 迭代器, 生成器和range等
      • 冒号,固定写法

      循环体 - 和for保持一个缩进的一条或者多条语句.(循环体就是需要重复执行的代码)

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

      • 序列中元素的个数决定for循环的循环次数

      •   for x in 'abc':
              print(x, 'hello world!')
          
          '''
          第一次: x = 'a':print(a, 'hello world')
          第一次: x = 'b':print(b, 'hello world')
          第一次: x = 'c':print(c, 'hello world')
          循环结束
          '''
        
    • range函数 - 产生指定范围的数字序列

      range(N) - 产生0~(N-1)的数字序列,例如:range(3) - 产生一个数字序列,里面的元素是(0, 1, 2)

      range(M-N) - 产生M~(N-1)的数字序列,例如:range(10, 15) - 产生一个数字序列,里面的元素是(10, 11, 12, 13, 14)

      range(M, N, step) - 产生M~N的序列,步长是step(每次增加step) - 步长为负数是,从大到小

    •   for x in range(3):
            print('循环体')
        
        for y in range(-3, 2):
            print('y:', y)
        
        for z in range(1,10,2):
            print(z)
        
        for c in range(10,2,-1):
        
      
  • while循环
    • 语法:

      '''
      while 条件语句:
      	代码段
      ​```
      
    • 说明:

      while - 关键字,固定写法

      条件语句 - 任何有结果的表达式(除了赋值语句)
      • 冒号,固定写法

      循环体 - 和while保持一个缩进的一条或者多条语句(需要重复执行的代码)

    • 执行过程:

      • 先判断条件语句是否为True,如果是,就执行循环体;执行完循环体,再判断条件语句是否为True,为True就再执行循环体…以此类推.如果条件语句的结果是False循环就结束

        x = 0
        while x < 3:
            print('hello world')
            x += 1
            
        
    • for循环 和 while循环的选择

      • 循环次数确定的时候使用for循环,循环次数不确定的时候使用为了循环.

        
        pw = '123456'
        x = input('你的密码:')
        while x != pw:
            x = input('你的密码:')
        
        # 简化写法
        while input('你的密码:') != pw:
            pass
        
        import random
        num = random.randint(0, 100)
        input_num = int(input('请输入数字(0~100):'))
        count = 1
        while input_num != num:
            # 给出提示
            if input_num > num:
                print('大了,小点!')
            # 重新输入
            else:
                print('小了,大点!')
            input_num = int(input('请输入数字(0~100):'))
            count += 1
        print('猜对啦,总共猜了', count, '次')
        if count < 4:
            print('天才')
        elif count <10:
            print('普通人')
        else:
            print('智商有点捉急啊')
        
  • 循环关键字
    • countinue, break, else

      • 1). continue - 结束一次循环 (只能在循环体中使用,执行循环体的时候如果遇到continue,当次循环直接结束,直接进入下次循环)

        for x in range(10,20):
            if x % 3 == 0:
                continue
            print('x:', x)
        
      • 2). break - 结束整个循环 (只能在循环体中使用,执行循环体的时候遇到break,整个循环体直接结束)

        for x in range(3):
            print('1')
            print('2')
            break
            print('3')
            
        # 使用while循环的套路
        '''
        while True:
            每次循环要做的事:
            if 循环结束的条件:
                break
                
        '''
        
        
      • else

        • 总结:

          1. else的存在不影响原来循环的执行.

            1. else后面的代码段在循环自然死亡的时候会执行,循环因为遇到break而结束的时候else后面的代码不会执行
        • 语法:

          for 变量 in 序列:
          循环体
          else:
          代码段
          while 条件语句:
          循环体
          else:
          代码段

          for x in range(3):
              print('hello world', x)
              if x == 1:
                  break
          else:
              print('交代遗言!')
          

作业

基础题

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

for x in range(1, 100,3):
    print(x)

num1 = 1
while num1 < 100:
    if num1 % 3 == 0:
        print(num1)
    num1 += 1

5 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

for x in range(100,200):
    if (x % 10) % 3 == 0 or (x % 100) % 3 == 0:
        print(x)
        
x = 100
while x < 200:
    if (x % 10) % 3 == 0 or (x % 100) % 3 == 0:
        print(x)
    x += 1
进阶题

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

num = 1
for x in range(1,11):
    num *= x
print(num)

2.统计100以内个位数是2并且能够被3整除的数的个数。

num = 0
for x in range(0, 101,3):
    if x % 10 == 2:
        num += 1
print('个数:', num)
#
num1 = 0
for x in range(0, 101):
    if (x % 10) == 2 and x % 3 == 0:
        num1 += 1
print('个数:', num1)

3 输入任意一个正整数,求他是几位数?

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

num = 1
x = int(input('输入任意整数:'))
while x > 10:
    x = x // 10
    num += 1
print('这是', num, '位数.')

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

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

# range(100, 1000) # x ** 3 + y ** 3 + z ** 3 == x * 100 + y * 10 + z
for num in range(100, 1000):
    x = num // 100
    y = num % 100 // 10
    z = num % 10
    if num == x ** 3 + y ** 3 + z ** 3:
        print(num)
挑战提
  1. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

    num = 7
    if num < 2:
        print('不是质数')
    count = 0
    for x in range(2, num):  # 取出除本身以内的所有数
        if num % x == 0:    # 用本身除以所有的数 能否会被整除
            count += 1      # 会被整除几次
    if count < 1:
        print('质数')
    else:
        print('不是质数')
    
  2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

  3. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

  4. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值