Python开发Day02(练习解答)

  1. 练习一

     1 a=[11,22,33,44,55,66,77,88,99,90]        #定义列表
     2 b={
     3     'k1':[],
     4     'k2':[]
     5 }               #定义一个空的字典一会吧列表里符合条件的添加进去
     6 for i in a:         #for循环取列表中的元素
     7     int(i)      #将列表中的值将之转换成整型
     8     if i > 66:   #判断i数字是否大于数字66
     9         b['k1'].append(i)       #将判断数字大于66的添加进k1字典中
    10     elif i < 66 :   #判断i数字是否小于数字66
    11         b['k2'].append(i)            #将判断数字小于66的添加进k1字典中
    12 print(b)        #输出字典
    13 
    14 执行结果:
    15 {'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55]}
    作业一

     

  2. 练习二

    li = ["alec", " aric", "Alex", "Tony", "rain"]          #定义列表
    tu = ("alec", " aric", "Alex", "Tony", "rain")          #定义元组
    dic = {
        'k1': "alex",
        'k2': ' aric',
        "k3": "Alex",
        "k4": "Tony"
    }               #定义字典
    
    li.extend(list(tu)+list(dic.values()))    #将字典中的value(值)取出来,将元组转换成列表形式,然后和列表li合并,这一步操作将所有的元素放在了一起
    for i in li:     #for循环列表li的元素,将其一一取出。
        i=i.strip()       #将循环出的字符串两边空格移除
        if (i.upper()).find('A') == 0 or i[len(i)-1] == 'c':   #将循环的值取出后将字符串小写转换成大写,在循环出的字符串中找到大写A的位置等于0(也就是开头),or(或者)拿出循环元素的总长度进行索引-1(拿到结尾)判断是不是等于字符串c
            print(i)            #循环出的元素满足要求的进行输出
    执行结果:
    alec
    aric
    Alex
    alec
    aric
    Alex
    alex
    aric
    Alex
    作业二

     

  3. 练习三

    shangpin= ["手机", "电脑", '鼠标垫', '游艇']   #定义一个列表
    for k,v in enumerate(shangpin,1):       #for循环取出列表中的元素,并加上序号从1开始
        print(k,v)              #显示序号并且显示元素
    xuhao=input('请输入要购买商品的序号>>>>')          #等待用户选择序号后赋值给xuhao变量
    
    if xuhao.isdigit():     #判断xuhao中的字符串是不是数字
        xuhao=int(xuhao)        #再上一层判断是数字后强制将str转换成int
        if xuhao < len(shangpin)+1: #判断用户输入的数字是否小于显示出来的序号,len(shangpin)+1:意思是统计商品元素一共有多少然后得到的数字+1
            print(shangpin[xuhao-1])    #输出用户输入的序号并显示对应的元素,shangpin[xuhao-1]:商品索引用户输入的数字-1后的元素位置
        elif xuhao > len(shangpin)+1:       #判断用户输入的数字是否大于显示出来的序号
            print('您输入的商品序号过大。')        #输出用户输入的序号过大
        else:           #另一种可能就是永和输入的过小
            print('您输入的商品序号过小。')        #输出用户输入的序号过小
    else:
        print('您输入的不是数字')           #在第一个判断的时候如果用户输入的是字母或其他的会输出该提示
    执行结果:
    1 手机
    2 电脑
    3 鼠标垫
    4 游艇
    请输入要购买商品的序号>>>>2
    电脑
    作业三

     

  4. 练习四

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    __author__ = 'WuYongQi'
    import time
    gouwu = [
        {"商品名": "电脑", "价格": 1999},
        {"商品名": "鼠标", "价格": 10},
        {"商品名": "游艇", "价格": 20},
        {"商品名": "美女", "价格": 998},
    ]               #定义字典内容
    zhuangtai=True      #定义一个变量为True
    gouwuche=[]             #定义一个空的列表
    while zhuangtai:      #判断zhuangtai变量是不是为真,如果是就会执行
        zichan=input('请输入您的资产:')        #用户输入他的总资产
        if not zichan.isdigit():    #判断用户输入的是不是数字,如果不是输出请输入数字
            print('请输入数字。')
        else:           #如果是数字将其转换成int类型并将zhuangtai变量定义成False,while不会再循环。
            zichan=int(zichan)
            zhuangtai=False
    while True:   #while死循环,但我们在里面使用的break退出
        for k,v in enumerate(gouwu,1):      #输出字典中并加上序号
            print(k,v)
        print(len(gouwu)+1,'充值金额与查看剩余资产',)          #在输出完之后我自己定义的显示
        print(len(gouwu)+2,'查看购物车')          #我自己定义的显示
        print(len(gouwu)+3,'退出')          #我自己定义的显示
        int_xuaho=input('\033[0;31m请输入要购买的商品序号或输入充值、查看购物车序号:\033[0m')           #提示用户输入对应的序号来操作
        if not int_xuaho.isdigit():     #判断用户是不是输入的数字,如果不是提示请输入数字并从新执行while循环
            print('请输入数字。')
            continue
        elif int(int_xuaho) == len(gouwu)+1:        #用户输入的数字将输入的数字转换成int(整型),看看是否超出了总商品的数量
            while True:
                print('如需退出输入exit','剩余资产',zichan)          #输入我自定义的提示,并输出剩余资产
                chongzhi=input('请输入充值金额:')      #等待用户输入需要充值的金额
                if not chongzhi.isdigit():      #判断用户输入的不是数字
                    if chongzhi == 'exit':      #判断用户输入的是exit然后break退出充值页面
                        break
                    else:       #用户输入其他的提示用户请正确输入,并暂停1.5秒
                        print('请正确输入!')
                        time.sleep(1.5)
                        print('-------------------------------------------------------------------------------')            #自定义输出
                else:       #判断用户输入的是数字
                    zichan+=int(chongzhi)           #将用户输入的数字转换成int(整型)
                    print('充值成功!')          #定义输入充值成功
                    print('现在剩余资产',zichan)      #定义输出剩余资产
                    time.sleep(1.5)         #暂停1.5秒
                    print('-------------------------------------------------------------------------------')            #自定义输出
                    break       #跳出充值页面
        elif int(int_xuaho) == len(gouwu)+2:        #判断用户输入的数字为商品数量总长度+2
            print('-------------------------------------------------------------------------------')            #自定义输出
            while True:         #进入死循环
                print('购物车内的商品:',gouwuche)         #输出用户当前购物车的情况
                print('删除购物车商品请输入del')            #自定义输出
                print('去往上一层请输入exit')            #自定义输出
                ex_it=input('请输入接下来的操作>>>>>')          #在输出完之后让用户输入接下来的操作
                if ex_it == 'exit' :            #判断用户输入exit跳出当前这个while死循环
                    break
                elif ex_it == 'del':            #判断用户输入del进入移除物品页面
                    print('-------------------------------------------------------------------------------')            #自定义输出
                    while True:
                        for i2,i3 in enumerate(gouwuche,1):     #循环输出购物车物品,并加上序号从1开始
                            print(i2,i3)
                        if 'biaoshis' in dir():     #判断是否有这个变量有的话删除
                            del biaoshis
                        delgouwu=input('请输入需要移除购物车的商品序号,可以移除多个请以空格分隔,去网上一层请输入exit>>>>')     #等待用户输入要移除的商品序号或者输入exit跳往上一层
                        if delgouwu == 'exit':      #判断用户输入的是exit跳出当前while循环
                            break
                        for i4 in delgouwu:         #循环用户输入的数字
                            if i4 == ' ':       #遇到循环的空格后跳出该次循环进行下一次循环
                                continue
                            elif not i4.isdigit():  #判断用户输入的不是数字,提示请正确输入,并从新循环
                                print('请正确输入!')
                                time.sleep(1)
                                print('-------------------------------------------------------------------------------')            #自定义输出
                                break
                            if 'biaoshis' in dir():     #判断biaoshis变量是否存在,存在的话将每一次进来的值减去循环删除次数
                                i4=int(i4)-biaoshis
                            if int(i4) > len(gouwuche):    #判断用户输入的大于当前购物车内商品的序号,并从新循环
                                print('您输入的数值过大!')
                                print('-------------------------------------------------------------------------------')            #自定义输出
                                time.sleep(1)
                                break
                            elif int(i4) <= 0 :         #判断用户输入的小于当前购物车内商品的序号,并从新循环
                                print('您输入的数值过小!')
                                print('-------------------------------------------------------------------------------')            #自定义输出
                                time.sleep(1)
                                break
                            else:           #删除选择的购物车内的商品并呗biaoshis变量+1或定义biaoshis变量
                                biaoshis=+1
                                print('移除成功!',gouwuche[int(i4)-1])
                                del gouwuche[int(i4)-1]
                        time.sleep(1)
                        print('-------------------------------------------------------------------------------')            #自定义输出
                else:           #否则用户用户输入的有误,请重新输入,并重新执行当前的while循环
                    print('输入有误,请重新输入')             #当用户输入的不是exit、del提示用户输入有误。
                    continue
        elif int(int_xuaho) == len(gouwu)+3:   #判断用户输入的数字为商品数量总长度+2,退出程序
            break
        elif zichan >= gouwu[int(int_xuaho)-1]['价格']:   #判断用户当前的资产大于等于物品的价格
            gouwuche.append(gouwu[int(int_xuaho)-1]['商品名'])             #将用户选择的物品添加进购物车列表内
            zichan-=gouwu[int(int_xuaho)-1]['价格']           #将总资产减去购买物品的价格
            print('购买成功!')          #提示购买成功
            time.sleep(2)                   #暂停2秒
            print('-------------------------------------------------------------------------------')            #自定义输出
            continue        #重新进入当前循环
        else:           #其他的判断为用户输入的物品价格高于他当前拥有的资产提示金额不足。
            print('金额不足,请及时充值。')
            time.sleep(1.5)             #暂停1.5秒
            print('-------------------------------------------------------------------------------')            #自定义输出
            continue                #重新进入当前循环
    
    
    
    执行结果:
    请输入您的资产:12312
    1 {'商品名': '电脑', '价格': 1999}
    2 {'商品名': '鼠标', '价格': 10}
    3 {'商品名': '游艇', '价格': 20}
    4 {'商品名': '美女', '价格': 998}
    5 充值金额与查看剩余资产
    6 查看购物车
    7 退出
    请输入要购买的商品序号或输入充值、查看购物车序号:1
    购买成功!
    -------------------------------------------------------------------------------
    1 {'商品名': '电脑', '价格': 1999}
    2 {'商品名': '鼠标', '价格': 10}
    3 {'商品名': '游艇', '价格': 20}
    4 {'商品名': '美女', '价格': 998}
    5 充值金额与查看剩余资产
    6 查看购物车
    7 退出
    请输入要购买的商品序号或输入充值、查看购物车序号:5
    如需退出输入exit 剩余资产 10313
    请输入充值金额:1
    充值成功!
    现在剩余资产 10314
    -------------------------------------------------------------------------------
    1 {'商品名': '电脑', '价格': 1999}
    2 {'商品名': '鼠标', '价格': 10}
    3 {'商品名': '游艇', '价格': 20}
    4 {'商品名': '美女', '价格': 998}
    5 充值金额与查看剩余资产
    6 查看购物车
    7 退出
    请输入要购买的商品序号或输入充值、查看购物车序号:6
    -------------------------------------------------------------------------------
    购物车内的商品: ['电脑']
    删除购物车商品请输入del
    去往上一层请输入exit
    请输入接下来的操作>>>>>del
    -------------------------------------------------------------------------------
    1 电脑
    请输入需要移除购物车的商品序号,可以移除多个请以空格分隔,去网上一层请输入exit>>>>1
    移除成功! 电脑
    -------------------------------------------------------------------------------
    请输入需要移除购物车的商品序号,可以移除多个请以空格分隔,去网上一层请输入exit>>>>exit
    购物车内的商品: []
    删除购物车商品请输入del
    去往上一层请输入exit
    请输入接下来的操作>>>>>exit
    1 {'商品名': '电脑', '价格': 1999}
    2 {'商品名': '鼠标', '价格': 10}
    3 {'商品名': '游艇', '价格': 20}
    4 {'商品名': '美女', '价格': 998}
    5 充值金额与查看剩余资产
    6 查看购物车
    7 退出
    作业四

     

  5. 练习五

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    __author__ = 'WuYongQi'
    import time
    dic = {
        "河北": {
            "石家庄": ["鹿泉", "藁城", "元氏"],
            "邯郸": ["永年", "涉县", "磁县"],
        },
        "北京": {
            "昌平区":["回龙观","沙河","朱辛庄"],
            "丰台区":["岳各庄","小屯村","郑常庄"]
        },
        "山西": {
            "太原":["小店区","杏花岭区","万柏林区"],
            "临汾":["尧都区","襄汾县","浮山县"]
        }
    }           #定义字典
    list=[]             #定义一个空的列表
    exit=True           #定义while循环条件
    while exit:         #while循环exit条件是否满足
        for k in dic:           #for循环字典将key取出来
            print(k.center(20,'-'))         #显示for循环取出的key并一共占20位空白处以-占满
            list.append(k)          #将key存进列表中
        print('退出程序请输入exit'.center(20,'-'))         #自定义输出内容一共占20位空白处以-占满
        list.append('exit')         #自行往列表中添加exit
        shengshi=input('请输入查询的省市>>>')           #等待用户输入查询的省市
        if shengshi.isalpha():          #判断用户输入的是不是字符串,如果不是输入请正确输入
            if shengshi in list:            #判断用户输入的值在列表中存在,如果不存在输出请正确输入,存在的话会清空列表
                if shengshi == 'exit':          #判断用户输入的是exit,退出程序
                    break
                list.clear()            #清空列表
                erji=True          ##定义while循环条件
                while erji:             #while循环erji条件是否满足
                    for i in dic[shengshi]:     #for循环取出字典中用户第二次输入的市区
                       print(i.center(20,'-'))              #将for循环取出来的元素一共占20位空白处以-占满进行输出
                       list.append(i)       #将用户查询的省市追加进列表
                    print('退出程序请输入exit'.center(20,'-'))                 #自定义输出exit一共占20位空白处以-占满
                    print('返回上一层使用back'.center(20,'-'))                 #自定义输出back一共占20位空白处以-占满
                    list.append('exit')             #自行往列表中添加exit
                    list.append('back')             #自行往列表中添加back
                    shiqu=input('请输入查询的市区>>>')             #等待用户输入查询的市区
                    if shiqu.isalpha():          #判断用户第二次输入的是不是字符串,如果不是提示输入请正确输入
                        if shiqu in list:           #判断用户第二次输入的值在列表中存在,如果不存在输出请正确输入,存在的话会清空列表
                            if shiqu == 'exit':         #判断用户输入的是exit,将第一个while的条件改成False,退出当前循环,退出了整个程序
                                exit=False
                                break
                            elif shiqu == 'back':            #判断用户输入的是back,退出当前循环
                                break
                            while True:             #定义了一个死循环我是使用break退出
                                for i2 in dic[shengshi][shiqu]:          #for循环取出字典中用户第二次输入的省市名,这次取出来的是县、村、区
                                    print(i2.center(20,'-'))                      #将for循环取出来的元素一共占20位空白处以-占满进行输出
                                print('退出程序请输入exit'.center(20,'-'))                 #自定义输出exit一共占20位空白处以-占满
                                print('返回上一层使用back'.center(20,'-'))                 #自定义输出bask一共占20位空白处以-占满
                                print('返回上一层使用top'.center(20,'-'))                 #自定义输出top一共占20位空白处以-占满
                                list.append('exit')             #自行往列表中添加exit
                                list.append('back')             #自行往列表中添加back
                                list.append('top')             #自行往列表中添加top
                                jueding=input('请输入是否退出程序或返回上一层、顶层:')        #等待用户第三次输入选择是退出程序还是?
                                if jueding.isalpha():       #判断用户第三次输入的是字符串
                                    if jueding == 'exit':           #判断用户第三次输入的是exit将exit和erji变量的值改为False,并且退出当前的循环
                                        exit=False
                                        erji=False
                                        break
                                    elif jueding == 'top':              #判断用户第三次输入的是top,将erji变量的值改为False,并且退出当前循环
                                        erji=False
                                        break
                                    elif jueding == 'back':                 #判断用户第三次输入的是back,退出当前循环
                                        break
                                    else:                   #用户输入其他的提示请正确输入,并且暂停一秒
                                        print('\033[0;31m请正确输入\033[0m'.center(30,'-'))
                                        time.sleep(1)
                                else:     #判断用户第三次输入的不是字符串,提示用户请正确输入,并且暂停一秒
                                    print('\033[0;31m请正确输入\033[0m'.center(30,'-'))
                                    time.sleep(1)
                                continue       #重新循环while循环
                        else:           #判断用户第二次输入的值在列表中找不到提示请正确输入,并且暂停一秒
                            print('\033[0;31m请正确输入\033[0m'.center(30,'-'))
                            time.sleep(1)
                    else:                   #判断用户第二次输入的不是字符串,提示用户请正确输入,并且暂停一秒后重新循环当前循环
                        print('\033[0;31m请正确输入\033[0m'.center(30,'-'))
                        time.sleep(1)
                        continue
            else:           #判断用户第一次输入的值在列表中找不到提示请正确输入,并且暂停一秒
                print('\033[0;31m请正确输入\033[0m'.center(30,'-'))
                time.sleep(1)
        else:        #判断用户第一次输入的不是字符串,提示用户请正确输入,并且暂停一秒
            print('\033[0;31m请正确输入\033[0m'.center(30,'-'))
            time.sleep(1)
    
    
    
    执行结果:
    ---------北京---------
    ---------河北---------
    ---------山西---------
    ----退出程序请输入exit-----
    请输入查询的省市>>>北京
    --------丰台区---------
    --------昌平区---------
    ----退出程序请输入exit-----
    ----返回上一层使用back-----
    请输入查询的市区>>>丰台区
    --------岳各庄---------
    --------小屯村---------
    --------郑常庄---------
    ----退出程序请输入exit-----
    ----返回上一层使用back-----
    -----返回上一层使用top-----
    请输入是否退出程序或返回上一层、顶层:back
    --------丰台区---------
    --------昌平区---------
    ----退出程序请输入exit-----
    ----返回上一层使用back-----
    请输入查询的市区>>>昌平区
    --------回龙观---------
    ---------沙河---------
    --------朱辛庄---------
    ----退出程序请输入exit-----
    ----返回上一层使用back-----
    -----返回上一层使用top-----
    请输入是否退出程序或返回上一层、顶层:top
    ---------北京---------
    ---------河北---------
    ---------山西---------
    ----退出程序请输入exit-----
    请输入查询的省市>>>exit
    作业五

     

posted @ 2016-05-02 18:12  WuYongQi。  阅读(252)  评论(0编辑  收藏  举报