Python学习日记(三)


一、分支

  • if ...elif...else 语句
  • if   条件1:
    
        命令1
    
    elif 条件2:   
    
        命令2
    
    else:
    
        命令3
    

    elif 和 else 都必须和 if 联合使用,而不能单独使用。可以将 if,elif 和 else 以及各自缩进的代码,看成一个完整的代码块;

    elif可以多次使用,判断多个条件。

  • if 条件嵌套
    if 条件1
    
       if 条件2
    
           命令1
    
       else
    
           命令2
    
    else
    
       命令3
    
    #仅当同时满足条件1和条件2,才执行命令1

二、条件表达式(三元操作符)

  • 语法:x if 条件 else y 
  • 可以改进分支结构,使程序更简洁。(多少元的元数取决于操作数的个数)
    x,y=4,5
    if x

三、断言 assert

  • 当这个关键字后面条件为假时,程序自动崩溃并抛出异常(自爆)。
  • 通常可以用它在程序中置入检查点,若确保程序中某个条件为真则程序正常运行,例
    >>> assert 3>4
    Traceback (most recent call last):
      File "", line 1, in 
        assert 3>4
    AssertionError
    >>> assert 4>3
    

四、循环

  • while循环
    while 条件:
        循环体
        
        
    例:
    a=1
    while a<=10:
        a+=1
  •  for循环
  • 可迭代的对象可以使用for循环进行遍历,例如:字符串、列表、字典、元组和集合
  • for循环里面有一个隐藏的机制,就是自动执行index+1,直到遍历完整个序列
  • for 目标 in 表达式:
        循环体
       
    
    #逐个打印字符串
    s="我要变富婆!"
    print(s)
    for i in s:
        print(i)  
    结果:
    >>>我要变富婆!
    >>>我
    >>>要
    >>>变
    >>>富
    >>>婆
    >>>!
    
    
    #输出列表元素
    list=['我要要要要','变成','富婆!']
    for i in list:
        print(i,len(i))
    结果:
    >>>我要要要要 5
    >>>变成 2
    >>>富婆! 3
    
    
    #对列表元素切片
    list=['我要','变成','富婆']
    for i in list[0]:
        print(i)
    结果:
    >>>我
    >>>要
  • for循环遍历字典,默认是遍历字典的所有key值
  • 如果想要取字典的value值,需要先取出所有的value值后,进行遍历取值,或者遍历key,打印的时候打印value值
  • 也可以使用for循环取字典的键值对
    dict={"name":"小花","age":18,"性别":"女"}
    #默认遍历字典中的key值
    for i in dict:
        print(i)
    
    输出结果:
    name
    age
    性别
    
    #直接遍历字典中的key值,打印出对应的value值
    for j in dict:
        print(dict[j])
    
    输出结果:
    小花
    18
    女
    
    #直接遍历字典中的value值
    for m in dict.values():
        print(m)
    
    输出结果:
    小花
    18
    女
    
    
    #取字典中的键值对
    
    for h in dict.items():
        print(h)
    
    for key,value in dict.items():
        print('{} 的值为 {}'.format(key,value))
    
    输出结果:
    ('name', '小花')
    ('age', 18)
    ('性别', '女')
    name 的值为 小花
    age 的值为 18
    性别 的值为 女
  • range()
  • 语法:range([start],stop,[step=1])
  • 生成一个从start参数的值开始到stop参数的值-1结束的数字序列,用[]括起来的参数为可选参数,例如range(1,5)表示生成1,2,3,4,step默认为1
  • 传一个参数默认start=0
    >>> range(5)
    range(0, 5)
    >>> for i in range(5):
    	print(i)
    0
    1
    2
    3
    4
    
    
    默认step=1
    >>> for i in range(2,9):
    	print(i)
    2
    3
    4
    5
    6
    7
    8
    
    设置step=2
    >>> for i in range(2,9,2):
    	print(i)
    2
    4
    6
    8
  •  break

  • break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。

    break语句用在while和for循环中。

    如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。

    answer='成为富婆'
    question=input("猜猜我的愿望是:")
    
    while True:
        if question==answer:
            break
        question=input("错咯,猜对才放过你:")
        
    print("对啦!放过你啦,可以走咯")
    
  • continue
  • Python continue 语句跳出本次循环,而break跳出整个循环。
  • 若条件为真则执行后续语句并继续下一循环,为假则跳出本轮循环,跳到continue下方执行语句并继续下一轮循环。
  • continue语句用在while和for循环中。
  • for i in range(10):
        if i % 2!=0:
            print(i)
            continue
        i+=2
        print(i)
    2
    1
    4
    3
    6
    5
    8
    7
    10
    9
    

习题扩展:

  1. 请写一个程序打印出 0~100 所有的奇数。

    方法一:
    for i in range(0,100):
        if i%2!=0:
            print(i)
         
        
    方法二:
    i=0
    while i<=100:
        if i%2!=0:
            print(i)
        i+=1
  2. 爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

    题目:请编程求解该阶梯至少有多少阶?

    方法一:
    step=0
    while True:
        if step%2==1 and step%3==2 and step%5==4 and step%6==5 and step%7==0:
            print("该长阶至少有",step,"阶")
            break
        else:
            step+=1
            
            
    方法二:
    x = 7
    i = 1
    flag = 0
    
    while i <= 100:
        if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
            flag = 1
        else:
            x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
        i += 1
    
    if flag == 1:
        print('阶梯数是:', x)
    else:
        print('在程序限定的范围内找不到答案!')
    
    
    
  3. 请将以下代码修改为三元操作符实现:

    x, y, z = 6, 5, 4
    if x < y:
        small = x
        if z < small:
            small = z
    elif y < z:
        small = y
    else:
        small = z
    答:small = x if (x < y and x < z) else (y if y < z else z)
    
    

    总结:

    • if的4种用法:if;if...else;if..elif...elif...elif...else;if嵌套;
    • Python可以有效地避免“悬挂else”(缩进的使用)
    • 条件表达式(三元操作符)
      small = x if x < y else y(求最小数)
    • 断言(assert):当需要确保程序中的某个条件一定为真才能让程序正常工作时,assert关键字就非常有用了,关键字后的条件为假的时候,程序自动崩溃并抛出AssertionError异常。