zoukankan      html  css  js  c++  java
  • python基础语法 第5节课 ( if 、 for )

    一、If 条件判断

    1、if条件判断的基本形式

    python中,if语句用于控制程序的执行,基本形式为:

    if  判断条件 :               ----------------→逻辑、成员运算、比较运算

          (缩进)执行语句.....

    else:                              ----------------→else:后面没有表达式

           ( 缩进)执行语句.....   

    其中,①”判断条件” 成立时(非0),则执行其后面的语句,执行内容可以是多行,以缩进来区分表示同一范围。

               ② else     为可选语句,在if判断条件不成立时,才会执行

          ③ 缩进   遇到冒号 就要缩进  标准的一个缩进=4个空格,注意4个空格并不等于一个tab。python中用tab是不规范的用法,一般用4个空格。但是在pychram中tab 跟4个空格是一样的,但是在python里面是不一样的!!!!

    例1:

    age = int(input('请输入您的年龄:'))
    if age > 18 : 
        print('已成年')
    else:
        print('未成年')
    #结果
    #20
    #成年 当判断条件成立时,执行判断后面的语句,就结束了,不会再往下执行

    例2:

    s = 'hello'
    if 'l' in s:    #成员关系运算符
        print('s的字符串里面有l')
    else:
        print('s的字符串里面没有l')
    #结果:s的字符串里面有l

    例3:

    a = 10
    b = 5
    if a >8 and b > 8:    #逻辑运算符
        print('a,b都大于8')
    else:
        print('a,b并不是都大于8')
    #结果:a,b并不是都大于8

    2.if ...elif...elif....else...

    在一个if 表达式中,即一个完整的if ...elif...elif....else...中,如果运行了其中一个条件,其他的分支条件不会再运行了!!!!

    总结起来:当其中一个条件满足,其他的条件分支自动屏蔽,不会再运行!!!

    if 4 > 3:
        print('这是真的')
    elif 4 != 3:
        print('这也是真的')
    else:
        print('这是假的')
    结果:这是真的

    上述第一个条件成立,直接执行运行结果,不会再去执行别的分支了(即使别的分支的条件也是为True)

    3.if后面最关心的是什么?------→判断是True 还是False

    形式   if a: ( 隐含有bool(a),是True 还是False)

    ① a是None 0 {} [ ] () “”  False ,就是等同于 if False:,就是条件不成立,不会执行if 下面的语句,而是执行else里面的语句

    ② a 是非空类型的,就等同与 if True:,就是条件成立,直接执行if下的语句,结束。(不会再去处理else了)

    a 是True

    if 1:    #True的,
        print('我是if下面的语句')
    else:
        print('我是else下面的语句')
    #结果:我是if下面的语句

    a是False

    if {}:    #False的,
        print('我是if下面的语句')
    else:
        print('我是else下面的语句')
    #结果:我是else下面的语句

     if not a:判断某个变量是否为空 ,是否存在(用的非常多)

    4.else 是可选语句  在判断条件不成立时,执行相关语句

       说明else 不是必备的 。要不要加else,根据自己的判断逻辑和业务逻辑去自行决定。(加上else,逻辑会更完整)

    a = 10
    if a > 18:
        print('a 的值大于18')
    
    #结果:没有输出结果
    a = 20
    if a > 18:
        print('a 的值大于18')
    #结果 a 的值大于18

    5.if 的嵌套

    例1

    a = 4
    b = 6
    member = ['java', 'ruby', 'python', "c"]
    one_name = 'c'
    if a > b:
        print("我是if下面的语句!")
        if one_name in member:
            print("我是member里面的一种语言")
        else:
            print("我不是member里面的一种语言")
    else:
        print("我是else下面的语句!")
    #结果:我是else下面的语句!
    a = 8
    b = 6
    member = ['java', 'ruby', 'python', "c"]
    one_name = 'c'
    if a > b:
        print("我是if下面的语句!")
        if one_name in member:
            print("我是member里面的一种语言")
        else:
            print("我不是member里面的一种语言")
    else:
        print("我是else下面的语句!")
    #结果:我是if下面的语句!
    #我是member里面的一种语言

    例2"age1 = input("张三的年龄:")

    age2 = input("李四的年龄:")
    
    if int(age1) > int(age2):
        print("张三的年龄大于李四")
        if 1:
            print("hello")
    elif int(age1) < int(age2):
        print("李四大于张三")
    
    # 2 个条件表达式
    if int(age1) >= int(age2):
        print("张三的年龄大于等于李四")
        if True:
            print("world")
    else:
        print("其他可能性")

    """结果
    张三的年龄:19
    李四的年龄:18
    张三的年龄大于李四
    hello
    张三的年龄大于等于李四
    world"""

    总结 :python运行一个文件的时候,会查看所有顶格写的代码。一个完整的if表达式只会看某一个满足条件的语句。

    6.if...if...if...else:  (用的比较多)

    if 1:
        pass
    if 2:
        pass
    if 3:
        pass
    else:
        print('hello') #else是最后一个if成对的

    二、for 遍历

    什么是遍历?  就是每个元素都想看看(for 循环,遍历,迭代, 是自动播放所有列表(序列)当中的元素

    应用在哪些数据类型:字符串  列表 元组  字典  集合(可迭代的对象就可以for循环)

    for循环里面有个隐藏机制:index + 1

    例1:列表的迭代

    songs = ['爱转角', "晴天", '人来人往', '左手指月']
    for each in songs:
        print("正在播放歌曲:{}".format(each))
    """
    正在播放歌曲:爱转角
    正在播放歌曲:晴天
    正在播放歌曲:人来人往
    正在播放歌曲:左手指月
    """

    列表的切片 字符串的for循环

    my_list = ['hello','love','python','lemon']
    for i in my_list[1:]:
        print(i)
    for j in my_list[0]:
        print(j)
        # love
        # python
        # lemon
        # h
        # e
        # l
        # l
        # o

    例2:元组迭代,同上述列表

    例3:字典的迭代

    1.对字典使用for循环,取到的默认是字典所有的Key

    语法:for each in dict1:  ( 或者 for each in dict1.keys():)

    dict1 = {"name": "jay", "age": 28, "hobby": "sing"}
    for each in dict1:  #遍历所有的key
        print(each)
    for each in dict1.keys():#加上key()输出的结果一样
        print(each)
    #结果
    name
    age
    hobby
    name
    age
    hobby

    2.取字典的值 

    语法:for each in dict1.values():    (或者 for each in dict1:   print(dict1[each])   )

    dict = {"name": "jay", "age": 28, "hobby": "sing"}
    for each in dict:    #遍历所有的值
        print(dict[each])
    for each in dict.values(): #使用value()函数
        print(each)
    #结果:
    jay
    28
    sing
    jay
    28
    sing

    3.取字典的键值对

    语法:for each in dict1.items():    (或者 for key,value in dict1.items():)

    dict1 = {"name": "jay", "age": 28, "hobby": "sing"}
    for each  in dict1.items():#遍历所有的键值对
        print(each)
    for key,value in dict1.items():
        print('key:valuse是{}'.format(key,value))
    """
    ('name', 'jay')
    ('age', 28)
    ('hobby', 'sing')
    key:valuse是name
    key:valuse是age
    key:valuse是hobby
    """

     集合也可以for循环,一般不用,用列表即可。

    for循环的嵌套:主要用来获取测试用例的数据

    (应用:九九乘法表、排序算法(冒泡排序,选择))--------面试

    1.range()函数 :用在你想重复执行多少次计算的时候,没有现存的列表可以循环,就用range()

    range(1,10)表示取1,2,3,4,5,6,7,8,9,类似于切片,取头不取尾

    range(1,10,2),增加步长为2,表示取1,3,5,7,9

    for i in range(1, 10,3):
        print(i)  
    
    for i in range(1, 10):
        print(i, end=' ')  # 不会换行,以空格隔开

    结果:

    1
    4
    7
    1 2 3 4 5 6 7 8 9

    2.for循环嵌套实例

    总结:for 循环的嵌套,就是外层取一个值,内层取全部值,再返回外层。。。。依次循环。(外层一个,内层一遍)

    list1 = ['A','B','C','D']
    list2 = ['E','F']
    for each1 in list1:
        print(each1,end = ' ')
        for each2 in list2:
            print(each2,end = ' ')

    结果:A E F B E F C E F D E F 

    fruits = [
        ['苹果','香蕉'],
        ['梨子','橘子'],
        ['西瓜','草莓']
    ]
    for group in fruits:
        print(group)
        for name in group:
            print(name)

    结果:

    ['苹果', '香蕉']
    苹果
    香蕉
    ['梨子', '橘子']
    梨子
    橘子
    ['西瓜', '草莓']
    西瓜
    草莓

    测试用例的数据获取:

    cases = [
        {'url':'/login','method':'get','data':'username'},
        {'url':'/logout','method':'post','data':'username'}
    ]
    for case in cases:
        print(case)
        for k,v in case.items():
            print(k,v)
    # {'url': '/login', 'method': 'get', 'data': 'username'}
    # url /login
    # method get
    # data username
    # {'url': '/logout', 'method': 'post', 'data': 'username'}
    # url /logout
    # method post
    # data username

    三、while循环(没for循环用的多)

    1.while循环的应用场景:没有具体的可迭代对象,没有遍历,不知道要循环多少次,不知道什么时候结束

    2.基本语法

    while  条件:

      代码

    3.执行流程:当把while循环下面的子分支执行完毕以后,程序会返回while的条件判断。就是一个加强版的if 判断  

    while 循环是把for循环的机制手动化了。即while循环需要手动控制

    cases = [
        {'url':'/login','method':'get','data':'username'},
        {'url':'/logout','method':'post','data':'username'}
    ]
    index = 0
    while index < len(cases):
        print(cases[index])
        index += 1
    # {'url': '/login', 'method': 'get', 'data': 'username'}
    # {'url': '/logout', 'method': 'post', 'data': 'username'}

    4.break:跳出循环,执行循环体之外后面的代码了(也可以用在for循环)

    cases = [
        {'url':'/login','method':'get','data':'username'},
        {'url':'/logout','method':'post','data':'username'}
    ]
    index = 0
    while True:
        print(cases[index])
        if index == 1:
            print('这里是index={},跳出循环'.format(index))
            break
        index += 1
    # {'url': '/login', 'method': 'get', 'data': 'username'}
    # {'url': '/logout', 'method': 'post', 'data': 'username'}
    # 这里是index=1,跳出循环

    5.continue:跳出本次循环,执行下一次循环(也可以用在for循环)

    index = 0
    while index < 2:
        print('这里是continue之前')
        index += 1
        continue
        print('这里是continue之后') #continue跳出本次循环,开始下次循环,永远不会执行这句话
    print('python')
    # 这里是continue之前
    # 这里是continue之前
    # python

    6.pass:占坑(子语句还没设计好怎么写,就用pass代替,保持语法的完整性)

    if 1:
        pass
    elif 2:
        pass
    else:
        print('python')

    7.while循环的嵌套(外层一个,内层一遍)

  • 相关阅读:
    JavaScript深入之参数按值传递
    计算机网络:这是一份全面 & 详细 的TCP协议学习指南
    前端点击下载excel表格数据
    为什么选择器:last-child有时没有起作用?
    深入理解防抖和节流函数
    收集常用正则表达式
    深入研究-webkit-overflow-scrolling:touch及ios滚动
    一文搞懂网络知识,IP、子网掩码、网关、DNS、端口号
    正则替换replace中$1的用法
    数据库连接池性能对比
  • 原文地址:https://www.cnblogs.com/ananmy/p/12764780.html
Copyright © 2011-2022 走看看