3.4 作业流程控制

流程控制

  1. 顺序结构:代码从上往下一条一条的执行,而且每条代码只执行一次 (默认)

    如:

    print('======')
    print('++++++')
    print('------')
    
    #以上就是按顺序执行每一条语句
    
  2. 分支/选择结构:满足某个条件才执行某段代码,如果条件不满足就不执行或者执行其他的代码

    • 单分支结构 - - - if

      语法:

      if 条件语句:     
          代码段   
          
      '''
      说明:
      1) if  -   关键字;固定写法
      2) 条件语句 - 任何有结果的表达式(赋值语句不可以):具体的数据、已经赋值过的变量、运算表达式
      3) :    -   固定写法,不能省略
      4) 代码段  - 和if保持一个缩进(一般用tab键产生)的一条或者多条语句;就是满足条件才执行的代码
      
      执行过程:如果条件语句为True(成立),就执行代码段,否则代码段不执行
      '''
      
      #实例:如果指定的数据是奇数就控制台打印'奇数'
      num = 29
      # 方法一:
      if num % 2 != 0:
          print('奇数')
      
      # 方法二:
      if num % 2:
          print('奇数')
      
      '''
      打印结果:
      奇数
      '''
      
    • 双分支结构 - - -if...else...

      语法:

      '''
      固定语法:
      if 条件语句:
          代码段1(条件成立的时候会执行的代码)
      else:
          代码段2(条件不成立的时候会执行的代码)
      '''
      
      #实例:
      age = 89
      if age < 18:
          print('未成年')
      else:
          print('成年')
      
      print('是个人!')
      
      '''
      打印结果为:
      成年
      是个人!
      '''
      
  3. 循环结构:让代码重复执行多次

    1. if

      1. if多分支——elif

        用法:根据不同的条件做不一样的事情,但是要求条件之间存在:其中某一个条件成立了,另外的其他条件一定不会成立

        语法:

        '''
        if 条件语句1:
            代码段1
        elif 条件语句2:
            代码段2
        elif 条件语句3:
            代码段3
        ...
        else:
            代码段N
        '''
        

        实例:

        # 实例1 :根据分数对成绩进行评级:A(90 ~ 100)、B(80 ~ 89)、C(60~79)、D(60分以下),分数是有效的百分制分数
        
        score = 30
        if score >= 90:
            print('A')
        elif score >= 80:
            print('B')
        elif score >= 60:
            print('C')
        else:
            print('D')
            
        # 打印结果为:D
        
        
        # 实例2:定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!
        # 公式: 体重(kg) / (身高(m)的平方值 ) 是否在18.5 ~ 24.9之间打印正常、偏瘦或者偏重。
        
        height = 1.55                 #身高
        weight = 44                   #体重
        result = weight / height ** 2
        if result < 18.5:
            print('偏瘦')
        elif result > 24.9:
            print('偏重')
        else:
            print('正常')
        
      2. if嵌套

        实例:

        # 实例:判断一个数是否是偶数,如果是打印'偶数'否则打印'奇数',同时判断这个数是否是4的倍数,如果是打印'4的倍数'
        
        num = 20
        
        if num % 2 == 0:
            print('偶数')
            if num % 4 == 0:
                print('4的倍数')
        else:
            print('奇数')
            
        # 打印结果为:
        '''
        偶数
        4的倍数
        '''
        
    2. for

      for语法:

      '''
      for 变量 in 序列:
          循环体
      '''
      
      ''' 
      #for循环说明:
      1)for、in  -   关键字;固定写法
      2)变量    -   变量名
      3)序列    -   容器型数据类型的数据,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等
      4)循环体   -   和for保持一个缩进的一条或者多条语句;循环体就是需要重复执行的代码
      
      执行过程:
      让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。(序列中元素的个数决定了循环的次数)
      
      '''
      
      #实例
      for x in 'abc=+-':
          print('+++', x)
          
      '''
      打印结果为:
      +++ a
      +++ b
      +++ c
      +++ =
      +++ +
      +++ -
      
      '''
      

      range函数 - - - 产生一个指定范围的数字序列

      range函数说明以及实例

      '''
      range(N)    -   产生[0,N)的数字序列, N必须大于0,每次数字增加1
      range(M,N)  -   产生[M,N)的数字序列,M < N, 每次数字增加1
      range(M,N,
      '''
      
      #实例1:统计10以内能被3整除数的个数
      count = 0
      for num in range(0, 10, 3):
          count += 1
      print('10以内能被3整除数的个数为:',count)
      
      '''
      打印结果为:
      10以内能被3整除数的个数为:3
      '''
      
      # 实例2:计算1~20中所有能被3整除但是不能被5整除的数的和
      s = 0      # 用来保存最后的和
      for x in range(3, 20, 3):
          if x % 5 != 0:
              s += x
      print('和:', s)
      
      '''
      打印结果为:
      和:48
      '''
      
      
    3. while循环

      while语法

      '''
      while 条件语句:
          循环体
      '''
      
      '''
      说明:
      1)while   -   关键字;固定写法
      2)条件语句  -   任何有结果的表达式
      3)循环体   -   和while保持一个缩进的一条或者多条语句;循环体就是需要重复执行的代码段
      
      执行过程:
      先判断条件语句是否为True,为True就执行循环体,执行完再判断条件语句是否为True,为True就执行循环体,...
      以此类推,直到判断条件语句的时候结果为False,整个循环就结束。
      '''
      

      实例:

      #实例1:打印1~5
      num = 1
      while num < 6:
          print(num)
          num += 1
          
      '''
      打印结果为:
      1
      2
      3
      4
      5
      '''
      
      # 进阶实例2:写一个猜数字游戏
      # 程序开始的时候随机产生一个100以内的数,用户通过输入的方式来猜数字,如果猜对了游戏结束,如果猜错了给出提示信息:大了、小了
      
      from random import randint   # 引入随机数
      robot = randint(0,99)  #产生0~99的随机数
      count = 1
      print(robot)
      user =int( input('猜数字(请输入0~99的数,猜猜机器产生了什么数字) 请输入:'))
      while user != robot:
          if user < robot:
              print('很可惜猜小了!再来一次')
              count += 1
          else:
              print('很可惜猜大了!别气馁再来一次')
              count += 1
      
          user =int( input('猜数字(请输入0~99的数,猜猜机器产生了什么数字) 请输入:'))
      else:
          if count < 10 :
              print('恭喜你!%d次就猜对了,简直是运气王,数字为:%d'%(count,robot))
          else:
              print('恭喜你!%d次就猜对了,运气有点背!,数字为:%d'%(count,robot))
      
      
    4. 循环关键字

      1. continue:结束一次循环(当执行循环体的时候遇到continue,当次循环结束,直接进入下次循环的判断)

        #实例1 :
        for x in range(5):
            print('====')
            continue
            print('++++')
            
        '''
        打印结果:
        ====
        ====
        ====
        ====
        ====
        '''
        
      2. break:结束整个循环(当执行循环体的时候遇到break,整个循环直接结束)

        # 实例1
        for x in range(5):
            print('xxx')
            break
            print('hello')
         
        '''
        打印结果:
        xxx
        '''
        

作业

基础题

  1. 根据输入的成绩的范围打印及格 或者不及格

    from from random import randint
    grade = randint(0,100)
    if grade >= 60:
        print('你的成绩为%d分,及格了'%grade)
    else:
        print('你的成绩为%d分,没有及格,还要继续努力!'%grade)
    
  2. 根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!

    user_age = int(input('请输入你的年龄:'))
    if user_age >= 18:
        print('成年')
    elif 0 <= user_age < 18:
        print('未成年')
    else:
        print('这不是人!')
    
  3. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数

    from random import randint
    a = randint(0,100)
    b = randint(0,100)
    if (a - b ) % 2 == 1:
        print('a-b的结果为奇数:',a-b)
    else:
        print('a-b的结果不是奇数')
    
  4. 使用for和while循环输出 0~100内所有3的倍数。

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

    # for循环
    for i in range(100,201):
        ones_unit = i % 10
        tens = (i // 10 ) % 10
        if  ones_unit % 3 == 0 or tens % 3 == 0:
            print(i)
    
    # while循环
    i = 100
    while i <=200:
        ones_unit = i % 10
        tens = (i // 10) % 10
        if  ones_unit % 3 == 0 or tens % 3 == 0:
            print(i)
        i += 1
    

进阶题

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

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

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

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

    int1 = int(input("请输入一个正整数:"))
    count = 0
    x = int1
    while int1 > 0:
         int1 //= 10
         count += 1
    print("%d正整数为%d位"%(x,count))
    
  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

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

    for x in range(1,10):
        for y in range(1, 10):
            for z in range(1, 10):
                i = x*100 + y*10 + z
                if x**3 + y**3 + z**3 == i:
                    print("水仙花数有:",i)
    '''
    打印结果:
    水仙花数有: 153
    水仙花数有: 371
    '''
    

挑战题

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

  2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

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

    for i in range(1,10):
        for j in range(1, i+1):
            print('%d+%d=%d'%(i, j, i*j),end='\t')
        print(end='\n')
        
    '''
    打印结果:
    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,100):
        for y in range(1, 100):
            for z in range(1, 100):
                i = x + y + z
                j = 3*x + 2*y +0.5*z
                if i == j == 100:
                    print('大马有%d匹,中马有%d匹,小马有%d匹的时候'%(x,y,z))
    
    '''
    打印结果:
    大马有2匹,中马有30匹,小马有68匹的时候
    大马有5匹,中马有25匹,小马有70匹的时候
    大马有8匹,中马有20匹,小马有72匹的时候
    大马有11匹,中马有15匹,小马有74匹的时候
    大马有14匹,中马有10匹,小马有76匹的时候
    大马有17匹,中马有5匹,小马有78匹的时候
    '''
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值