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循环的嵌套(外层一个,内层一遍)

  • 相关阅读:
    【Educational Codeforces Round 101 (Rated for Div. 2) C】Building a Fence
    【Codeforces Round #698 (Div. 2) C】Nezzar and Symmetric Array
    【Codeforces Round #696 (Div. 2) D】Cleaning
    【Codeforces Round #696 (Div. 2) C】Array Destruction
    【Educational Codeforces Round 102 D】Program
    【Educational Codeforces Round 102 C】No More Inversions
    【Good Bye 2020 G】Song of the Sirens
    【Good Bye 2020 F】Euclid's nightmare
    使用mobx入门
    requestAnimationFrame 控制速度模拟setinterval
  • 原文地址:https://www.cnblogs.com/ananmy/p/12764780.html
Copyright © 2011-2022 走看看