zoukankan      html  css  js  c++  java
  • 语法,if,while循环,for循环

    一、语法

    • if:

    if判断其实是在模拟人做判断。就是说如果这样干什么,如果那样干什么。对于ATM系统而言,则需要判断你的账号密码的正确性。

    if 条件:
        代码1
        代码2
        代码3
        ...
    # 代码块(同一缩进级别的代码,例如代码1、代码2和代码3是相同缩进的代码,这三个代码组合在一起就是一个代码块,相同缩进的代码会自上而下的运行)
    

    例如:输入姑娘的年龄后,进行以下判断:

    1. 如果姑娘小于18岁,打印“未成年”

    2. 如果姑娘大于18岁小于25岁,打印“表白”

    3. 如果姑娘大于25岁小于45岁,打印“阿姨好”

    4. 如果姑娘大于45岁,打印“奶奶好”

      while 1:
          age=input('请输入女孩的年龄')
          age=int(age)
      
          if age >=45:
              print('奶奶好')
          if age >=25 and age<45:
              print('阿姨好')
          if age >=18 and age<25:
              print('表白')
          if age <18:
              print('未成年')
      
      
    • if...else:

    ​ if...else表示if成立代码成立会干什么,else不成立会干什么。

    • if...elif...else

    if...elif...else表示if条件1成立干什么,elif条件2成立干什么,elif条件3成立干什么,elif...否则干什么。

    例如:成绩评判

    • 如果 成绩>=90,打印"优秀"
    • 如果 成绩>=80 并且 成绩<90,打印"良好"
    • 如果 成绩>=70 并且 成绩<80,打印"普通"
    • 其他情况:打印"差"
    # 成绩评判
    score = input("your score: ")
    score = int(score)
    
    
    if score >= 90:
        print('优秀')
    # elif score >= 80 and score < 90:
    elif score >= 80:
        print('良好')
    # elif score >= 70 and score < 80:
    elif score >= 70:
        print('普通')
    else:
        print('差')
    

    二、while循环

    循环就是一个重复的过程,我们人需要重复干一个活,那么计算机也需要重复干一个活。ATM验证失败,那么计算机会让我们再一次输入密码。这个时候就得说出我们的wile循环,while循环又称为条件循环。

    • while+break

      循环的目的是为了让计算机和人一样工作,循环处理事情.

      break的意思是终止掉当前层的循环,执行其他代码。

      例如:

      while True:
          user_db = 'nick'
          pwd_db = '123'
      
          inp_user = input('username: ')
          inp_pwd = input('password: ')
          if inp_user == user_db and pwd_db == inp_pwd:
              print('login successful')
              break
          else:
              print('username or password error')
      
      print('退出了while循环')
      

      username: nick
      password: 123
      login successful
      退出了while循环

    • while+continue

      continue的意思是终止本次循环,直接进入下一次循环。

      continue不能加在循环体的最后一步执行的代码,因为代码加上去毫无意义,如下所示的continue所在的位置就是毫无意义的。

      ps:注意是最后一步执行的代码,而不是最后一行。

    • while循环的嵌套

      ATM密码输入成功还需要进行一系列的命令操作,比如取款,比如转账。并且在执行功能结束后会退出命令操作的功能,即在功能出执行输入q会退出输出功能的while循环并且退出ATM程序。

    例如:猜年龄游戏升级版,有以下三点要求:

    1. 允许用户最多尝试3次

    2. 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序

    3. 如果猜对了,就直接退出

      n=0
      age=20
      while n<4:
          guess_age=int(input(f'请输入年龄,你还有{3-n}次机会哦:'))
          if guess_age==age:
              print('猜对了,退出程序')
              break
          else:
              print('猜错了')
              n=n+1
              if n==3:
                  a=input('你已经输错了3次,如想继续玩,请输入y或者Y;'
                            '不继续请输入n或者N:')
                  while 1:
                      if a=="n"or a=="N":
                          print('不猜了,退出程序')
                          n=4
                          break
                      elif a=='y'or a=='Y':
                          n=0
                          break
      

    三、for循环

    字典也有取多个值的需求,字典可能有while循环无法使用了,这个时候可以使用我们的for循环。

    for循环的循环次数受限于容器类型的长度,而while循环的循环次数需要自己控制。for循环也可以按照索引取值。

    例如:打印1-100之间的偶数:

    for i in range(1,101):
        if i%2!=1:
            print(i)
    
    • for+continue

      for循环调出本次循环,进入下一次循环

    • for+break

      for循环调出本层循环。

    • for循环嵌套

      外层循环循环一次,内层循环循环所有的

      例如:打印如下所示9*9乘法表:

      '''
      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 
      '''
      
      for i in range(1,10):
          for j in range(1,i+1):
              print(f'{i}','*',f'{j}','=',i*j,end=' ')
          print()
      
    • for+else

      for循环没有break的时候触发else内部代码块。

    • for循环实现loading

      import time
      
      print('Loading', end='')
      for i in range(6):
          print(".", end='')
          time.sleep(0.2)
      

      loading......

    例如:打印如下所示金字塔:

    '''
                 # max_level=5
        *        # current_level=1,空格数=4,*号数=1
       ***       # current_level=2,空格数=3,*号数=3
      *****      # current_level=3,空格数=2,*号数=5
     *******     # current_level=4,空格数=1,*号数=7
    *********    # current_level=5,空格数=0,*号数=9
    
    # 数学表达式
    空格数 = max_level-current_level
    *号数 = 2*current_level-1
    '''
    
    max_level=5
    for i in range(1,6):
        current_level=i
        a=5-i
        b=2*i-1
        print(' '*a,'*'*b)
        
    
  • 相关阅读:
    洛谷 P1037 产生数
    阿里实习储备知识
    腾讯后台开发面试总结(别人的)
    两个栈实现队列的功能
    栈里的元素升序排列
    二叉树路径和
    硬币组合问题
    九月十月百度,迅雷,华为,阿里巴巴笔试面试六十题(第411~470题)
    轻松搞定面试中的二叉树题目
    july教你如何迅速秒杀掉:99%的海量数据处理面试题
  • 原文地址:https://www.cnblogs.com/gongjingyun123--/p/10908459.html
Copyright © 2011-2022 走看看