• 3 条件语句与循环语句


    条件语句

      当我们写的程序需要分支时,也可以说当一个事件发生时在特定情况下会产生不同处理情况时就会用到我们的条件语句。

      if...else语句:

      单分支:

        

    '''
    if 条件 :
        满足条件后执行的代码
    '''
    
    age = 18
    if age == 18 :
        print("我成年了!")

    双分支

      

    '''
    if 条件 :
        满足条件后执行的代码
    else
        不满足if时执行
    '''
    
    age = 19
    if age <= 18 :
        print("我未年!")
    else :
        print("我成年了!")

    多分支:

      

    '''
    if 条件 :
        满足条件后执行的代码
    elif 条件 :
        不满足上面条件执行
    elif 条件 :
        不满足上面条件执行
    ...
    else
        不满足上面条件执行
    '''
    
    age = 19
    if age <= 18 :
        print("我还未年!")
    elif age >= 18 :
        print("我已经成年了!")
    else :
        print("我今年刚成年!")

    缩进:

      在其它的语言里,大多通过{}来确定代码块,而python里没有{}这就是python中的一大特色。那python怎么确定执行的代码块呢?这就引出了一个概念强制缩进,

      目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序无法确定执行的代码块。

    Python的缩进原则:

      

    顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进

    同一级别的代码,缩进必须一致

    官方建议缩进用4个空格,当然你也可以按你习惯的方式缩进。

     


     循环语句

      while语句:

      

    '''
    while 条件 :
        满足条件后执行的代码
    '''
    
    count = 0 
    while count <= 100 :    #只要count<=100就不断执行下面的代码
        print("loop ", count )
        count +=1    #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0

    while...else语句:

      与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句。while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句。

       

    >>> cont = 0 
    >>> while cont < 10:
    ...     print(cont)
    ...     cont += 1 
    ...     if cont == 7:
    ...             break     # 循环中有break else :后的代码不执行....
    ... else:
    ...     print('end...')
    ... 
    0
    1
    2
    3
    4
    5
    6
    >>> cont = 0 
    >>> while cont < 10:   # 循环中没有break
    ...     print(cont)
    ...     cont += 1 
    ... else:                       # 循环完毕 最后执行 else 下的代码
    ...     print('end...')
    ... 
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    end...
    ###############################
    
            

    死循环:

      

    有一种循环叫死循环,一但进入死循环,程序就会运行到天荒地老永远无法退出。

    while 是只要后边条件永远成立(也就是条件结果永远为真)就一直执行。

    例如:上面的代码,如果没有代码 count += 1 ,程序将进入死循环。因为count = 0 ,count <= 100 永远成立。

     

    循环终止语句:

      

    如果在循环的过程中,因为某些原因,你不想继续循环了,就要用到break 或 continue 终止语句。

    break:完全跳出循环,执行循环后的代码。

    continue:跳出本次循环,不执行continue后的代码,重新进入循环进行循环的条件判断。

     

    >>> while cont < 10:
    ...     cont += 1 
    ...     if cont == 7 :
    ...             continue     # 跳过此时循环进行下一次 结果中没有7
    ...     print(cont)
    ... 
    1
    2
    3
    4
    5
    6
    8
    9
    10
    >>> cont = 0 
    >>> while cont < 10 :
    ...     cont += 1 
    ...     if cont == 7 :
    ...             break         # 遇到 break 终止循环..... 7后面的都不会出来
    ...     print(cont)
    ... 
    1
    2
    3
    4
    5
    6
    >>> 

     

     

      for循环:

      不依赖索引的取值

      

    for i in range (4) :    # i 为变量 (4)取值范围
        print(">>:",i)    # 0 1 2 3
    
    for i in range (1,5) :    # 顾头不顾尾
        print(">>:",i)    # 1 2 3 4
    
    for i in range (1,5,2) :    # 步长2 每两个取一个值
        print(">>:",i)    # 1 3

     .for..else语句:

        同 while ..... else 一样

    >>> for k in range(10):
    ...     print(k)
    ... else:
    ...     print('end....')
    ... 
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    end....
    >>> 

      

    range:顾头不顾尾,默认从0开始

    for_else的使用规则和while_else相同。

    九九乘法表练习:

    >>> for i in range(1,10):
    ...     for j in range(1,i+1):
    ...             print('{0}*{1}={2}'.format(j,i,i*j),end=" ")
    ...     print()
    ...
    1*1=1
    1*2=2 2*2=4
    1*3=3 2*3=6 3*3=9
    1*4=4 2*4=8 3*4=12 4*4=16
    1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
    1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
    1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
    1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
    1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

    PS:

      print()自带一个换行符。

      如果想取消默认换行符加end(""),详情可以参考九九乘法表的代码。

    练一练

    #!/usr/bin/env python3 
    # _*_ coding:utf-8 _*_
    # @Time    : 2017/08/29 
    # @Author  : tony
    # @File    : practice  
    # @Version : 1.0
    
    
    
    
    #1.编写for循环,利用索引遍历出每一个字符(选做题)msg='hello egon 666'
    
    msg='hello egon 666'
    for k in msg:
        print(k)
    
    
    
    #2.编写while循环,利用索引遍历出每一个字符msg='hello egon 666'
    
    cont = 0
    while cont < (len(msg)):
        print(msg[cont])
        cont += 1
    
    
    #3.msg='hello alex'中的alex替换成SB
    
    msg = 'hello alex'
    print(msg.replace('hello','SB'))
    
    
    #4.msg='/etc/a.txt|365|get'将该字符的文件名,文件大小,操作方法切割出来
    
    msg = '/etc/a.txt|365|get'
    print(msg.split('|'))
    
    
    #5.编写while循环,要求用户输入命令,如果命令为空,则继续输入
    
    while True:
        ret_inp = input('>>>').strip()
        if not ret_inp:continue
        print(ret_inp)
        break
    
    
    #6.编写while循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入
    
    while True:
        user = input('>>>').strip()
        if not user or user.isdigit():continue
        print(user)
        break
    
    
    #7.编写while循环,让用户输入内容,判断输入的内容以alex开头的,则将该字符串加上_SB结尾
    
    while True:
        user_input = input('you must input alex is stop >>>').strip()
        if user_input.startswith('alex'):
            user_input += '_SB'
            print(user_input)
            break
        print(user_input)
    
    
    
    
    
    """
    8.
    1.两层while循环,外层的while循环,让用户输入用户名、密码、工作了几个月、每月的工资(整数),用户名或密码为空,或者工作的月数不为整数,或者
    月工资不为整数,则重新输入
    2.认证成功,进入下一层while循环,打印命令提示,有查询总工资,查询用户身份(如果用户名为alex则打印super user,如果用户名为yuanhao或者wupeiqi
    则打印normal user,其余情况均打印unkown user),退出功能
    3.要求用户输入退出,则退出所有循环(使用tag的方式)
    运行效果如下:
    user: egon
    password: 123
    work_mons: 12
    salary: 10000
    查询总工资
    查询用户身份
    退出登录
    >>: 1
    总工资是: 120000.0
    查询总工资
    查询用户身份
    退出登录
    >>: 2
    unkown user
    查询总工资
    查询用户身份
    退出登录
    >>: 3
    """
    
    tag = True
    msg = '''
    1 查询salary
    2 查询身份
    3 exit'''
    
    while True:
        user_name = input('Please input your user_name >>> ').strip()
        passwor = input('Please input your passwor >>> ').strip()
        work_mons = input('Pleae input work_mons >>> ').strip()
        salary = input('Please input your salary').strip()
        if len(user_name)  == 0  or len(passwor) == 0  or (not work_mons.isdigit()) or (not salary.isdigit()):
            print('用户名或密码错误或输入格式错误')
            continue
        while tag:
            cmd = int(input('>>>').strip())
            if cmd == 1:
                print('总工资{0}'.format(float(salary)*float(work_mons)))
                continue
            if cmd == 2:
                print('unkown user')
                continue
            if cmd == 3:
               tag = False
    View Code
    1.编写for循环,利用索引遍历出每一个字符(选做题)msg='hello egon 666'
    2.编写while循环,利用索引遍历出每一个字符msg='hello egon 666'
    3.msg='hello alex'中的alex替换成SB
    4.msg='/etc/a.txt|365|get'将该字符的文件名,文件大小,操作方法切割出来
    5.编写while循环,要求用户输入命令,如果命令为空,则继续输入
    6.编写while循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入
    7.编写while循环,让用户输入内容,判断输入的内容以alex开头的,则将该字符串加上_SB结尾
    
    8.
    1.两层while循环,外层的while循环,让用户输入用户名、密码、工作了几个月、每月的工资(整数),用户名或密码为空,或者工作的月数不为整数,或者
    月工资不为整数,则重新输入
    2.认证成功,进入下一层while循环,打印命令提示,有查询总工资,查询用户身份(如果用户名为alex则打印super user,如果用户名为yuanhao或者wupeiqi
    则打印normal user,其余情况均打印unkown user),退出功能
    3.要求用户输入退出,则退出所有循环(使用tag的方式)
    运行效果如下:
    user: egon
    password: 123
    work_mons: 12
    salary: 10000           
    查询总工资          
    查询用户身份           
    退出登录
    >>: 1
    总工资是: 120000.0            
    查询总工资           
    查询用户身份           
    退出登录          
    >>: 2
    unkown user            
    查询总工资            
    查询用户身份          
    退出登录
    >>: 
    #
  • 相关阅读:
    IDEA 配置Springboot项目热部署
    一文读懂类加载机制
    面试必问的MySQL锁与事务隔离级别
    工作中遇到的99%SQL优化,这里都能给你解决方案(三)
    谁有好的oracle数据库学习书籍,麻烦提供一下,感激不尽
    静态资源上传至远程ftp服务器,ftp工具类封装
    进程和线程,并发和并行,同步和异步,高并发和多线程,理一理概念
    使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题
    曾经天真的以为单例只有懒汉和饿汉两种!原来单例模式还能被破解!!!
    了解一下zookeeper,搭建单机版和集群版的环境玩玩,需要手稿的,留下邮箱
  • 原文地址:https://www.cnblogs.com/liushubao/p/7453348.html
Copyright © 2020-2023  润新知