• python中的流程控制语句


    python 第二课

    【1】条件判断

    if (1==1):
        print('1=1为真')
    else:
        print('1=1为假')
    
    
    1=1为真
    

    【1.1】多重if elif else

    price=10
    num=5
    money=40
    dazhe=0.8
    if money>(price*num):
        print('你有足够的钱买'+str(num)+'个单价为'+str(price)+'元的物品')
    elif money>(price*num)*dazhe:
        print('打'+str(dazhe)+'折之后,你可以买得起了')
    else:
        print('打'+str(dazhe)+'折之后,你还是买不起')
    
    打0.8折之后,你还是买不起
    

    【1.2】逻辑运算与或非 and or not

    a=1
    b=2
    if a==b or a<b:
        print('a=b 或者 a<b')
    
    a=b 或者 a<b
    
    
    
    a=1
    b=2
    print(a and b)
    
    2
    

    【1.3】断言操作:assert

    age=19
    assert age==18,'age不等于18,抛出异常'
    
    ---------------------------------------------------------------------------
    
    AssertionError                            Traceback (most recent call last)
    
    <ipython-input-12-5263d9ebe67e> in <module>
          1 age=19
    ----> 2 assert age==18,'age不等于18,抛出异常'
    
    
    AssertionError: age不等于18,抛出异常
    

    【2】循环

    for 循环 --遍历循环

    while 循环 --条件循环

    【2.1】for

    costs=[3,4,11,14,15,200]
    for i in costs:
        print('本次消费{}元'.format(str(i)));
    
    本次消费3元
    本次消费4元
    本次消费11元
    本次消费14元
    本次消费15元
    本次消费200元
    

    for 中的else,如果for、while正常运行完成,则会输出else

    import random
    random_numbers=[]
    i=1
    for i in range(1,10):
        random_numbers.append(random.randint(1,10))
    else:
        print('循环顺利执行完毕',random_numbers)
        
    
    循环顺利执行完毕 [5, 1, 5, 5, 3, 10, 1, 9, 2]
    

    【2.2】while

    import random
    random_numbers=[]
    while len(random_numbers)<=20:
        random_numbers.append(random.randint(1,10))
    print( random_numbers,len( random_numbers))
    
    [5, 9, 7, 2, 8, 10, 1, 2, 3, 5, 8, 6, 6, 2, 8, 8, 10, 4, 3, 8, 10] 21
    

    最佳实践:能用 for 的就不要用 while

    # 使用for 循环代替 [2.2] while
    random_numbers=[]
    for i in range(20):
        random_numbers.append(random.randint(1,10))
    
    print( random_numbers,len( random_numbers))
    
    [10, 9, 7, 1, 10, 7, 7, 1, 4, 10, 2, 2, 4, 5, 3, 10, 8, 5, 4, 3] 20
    

    什么时候必须用where循环? 当循环操作和数量没有关系的时候,只能用 while

    比如当我添加随机数碰到9之后就停止循环

    random_numbers=[]
    while (9 not in random_numbers):
        random_numbers.append(random.randint(1,10))
    print( random_numbers,len( random_numbers))
    
    [5, 7, 1, 9] 4
    

    【2.3】for循环可以构建推导式

    所谓推导式,就是从一个数据序列构建另外一个数据序列的方法

    list1=list(range(10))
    list1
    
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    #一般我们要构建每个值乘以10
    new_list=[]
    for i in list1:
        new_list.append(i*10)
    print(new_list)
    
    [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
    

    使用推导式构建

    list1=list(range(10))
    print(list1)
    new_list=[ i*10 for i in list1]
    print(new_list)
    
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
    

    同理,字典式推导,元组推导式

    #字典推导式
    
    list1=list(range(10))
    print(list1)
    dict_numbers={ i:'A' for i in list1}
    print(dict_numbers)
    
    #元组推导式
    
    tuple1=(i*10 for i in list1)
    tuple2=tuple(tuple1)
    print(tuple2)
    
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    {0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'A', 5: 'A', 6: 'A', 7: 'A', 8: 'A', 9: 'A'}
    (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
    

    利用推导式查询字典值对应的 key

    dict_var1={
        'a':100,
        'b':100,
        'c':200
    }
    
    print([key for key,value in dict_var1.items() if value==100])
    
    ['a', 'b']
    

    案例

    购物车

    # Auth chaoqun.guo
    print("欢迎来到博马数码店~~")
    while True:
        balance = input("请输入你的余额:")
        if balance.isdigit():
            break
        else:
            print("你输入的信息不规范,请输入纯整数!")
    balance = int(balance)
    goods_list = [
        ["Iphone", 3000],
        ["HW mate40", 4000],
        ["HW watch", 800],
        ["HW bike", 1200],
        ["MI note2", 2300]
    ]
    shipping_list = []
    while True:
        print("请选购商品(按q退出):")
        for index, goods in enumerate(goods_list):
            print(index + 1, goods)
        choice = input("请输入你要采购的商品编号:")
        if choice == 'q':
            if len(goods_list) == 0:
                print("购物车空空如也,你啥也没买!")
            else:
                print("你的余额还剩下:{},你购买了如下物品:".format(balance))
                for index, goods in enumerate(shipping_list):
                    print(index + 1, goods)
            break
        elif choice.isdigit():
            choice = int(choice)
            if len(goods_list) >= choice > 0:
                if balance >= goods_list[choice - 1][1]:
                    shipping_list.append(goods_list[choice - 1])
                    balance = balance - goods_list[choice - 1][1]
                    print("添加了物品:{} ,到你的购物车,你的余额还剩下:{}".format(goods_list[choice - 1], balance))
                else:
                    print("你的钱只剩下:{},请购买其他物品或退出!".format(balance))
            else:
                print("你输入了无效的选项!")
    
        else:
            print("你输入了无效的选项!")
    

    三级菜单

    # 三级菜单
    data = {
        '湖南省': {
            '长沙市': {
                '岳麓区': '我们这里有岳麓山啊',
                '芙蓉区': '我们这里有芙蓉广场啊'
                },
            '永州市': {
                '东安区': '我们这里有好吃的东安鸡啊',
                '祁阳县': '我们这里有好吃的炒血鸭啊'
                }
        },
            '广东省': {
                '深圳市': {
                    '南山区': '我们这里有腾讯啊',
                    '龙岗区': '我们这里有华为啊'
                },
                '广州市': {
                    '天河区': '我说我这里有广州塔,你信吗?',
                    '白云区': '我们这里有4399游戏公司,你信吗?'
                }
    
        }
    
    }
    exit_flag = False
    while not exit_flag:
        for i in data:
            print('1', i)
        choice = input("选择进入省>>(b返回,q退出):")
        if choice in data:
            while not exit_flag:
                for i2 in data[choice]:
                    print("	2.",i2)
                choice2 = input("选择进入市>>(b返回,q退出):")
                if choice2 in data[choice]:
                    while not exit_flag:
                        for i3 in data[choice][choice2]:
                            print("		3.", i3)
                        choice3 = input("选择进入区(b返回,q退出)>>:")
                        if choice3 in data[choice][choice2]:
                            print(data[choice][choice2][choice3])
                        elif choice3 == 'b':
                            break
                        elif choice3 == 'q':
                            exit_flag = True
                        else:
                            print("您输入的名称不存在,请查看列表重新输入~~")
    
                elif choice2 == 'b':
                    break
                elif choice2 == 'q':
                    exit_flag = True
                else:
                    print("您输入的名称不存在,请查看列表重新输入~~")
        elif choice == 'b':
            break
        elif choice == 'q':
            exit_flag = True
        else:
            print("您输入的名称不存在,请查看列表重新输入~~")
    

  • 相关阅读:
    简化得最没道理的6个汉字,让人大跌眼镜
    简化得最没道理的6个汉字,让人大跌眼镜
    简化得最没道理的6个汉字,让人大跌眼镜
    java面向对象高级分层实例_测试类(main方法所在的类)
    java面向对象高级分层实例_测试类(main方法所在的类)
    java面向对象高级分层实例_测试类(main方法所在的类)
    java面向对象高级分层实例_数据库操作类
    squared-error loss is much more repaidly updated than mean-absolute-deviation when searching for splits
    Greedy Function Approximation:A Gradient Boosting Machine
    ridge regression 无惩罚,导致预测结果空间过大而无实用价值
  • 原文地址:https://www.cnblogs.com/gered/p/13269033.html
Copyright © 2020-2023  润新知