Python基础第三天

一、内容

 

 

 

二、练习

练习1

题目:元素分类

有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key的值中,将小于 66 的值保存至字典的第二个key的值中。

图示:

代码:

l = [11,22,33,44,55,66,77,88,99,90]
d = {'key1':[],'key2':[]}
for i in l:
    if i > 66:
        d['key1'].append(i)
    else:
        d['key2'].append(i)
print(d)

输出结果:

{'key1': [77, 88, 99, 90], 'key2': [11, 22, 33, 44, 55, 66]}
View Code

 

 

练习2

题目:

查找列表中元素,移除每个元素的空格,并查找以 "k"或"K"开头并且以 "y" 结尾的所有元素。

li = ["kitty", "key", "knight","   Lisa", "sky"]

tu = ("Kitty   ", "   key", "   Knight","Lisa", "xman")

dic = {'k1': "  knight", 'k2':'   key', "k3": "Knight   ", "k4": "  Lisa"}

 

图示:

 

代码:

li = ["kitty", "key", "knight","   Lisa", "sky"]

tu = ("Kitty   ", "   key", "   Knight","Lisa", "xman")

dic = {'k1': "  knight", 'k2':'   key', "k3": "Knight   ", "k4": "  Lisa"}

li_l = []
tu_l = []
dic_l = []

for i in li:
    i = i.strip()
    if i.startswith('k' or 'K') and i.endswith('y'):
        li_l.append(i)
for j in tu:
    j = j.strip()
    # print(j)
    if j.startswith('k' or 'K') and j.endswith('y'):
        tu_l.append(j)

for k in dic:
    value = (dic[k].strip())
    if value.startswith('k' or 'K') and i.endswith('y'):
        dic_l.append(value)
li_l.extend(tu_l)
dic_l.extend(li_l)
print(dic_l)

输出结果:

['knight', 'key', 'kitty', 'key', 'key']

 

 

练习3

题目:输出商品列表,用户输入序号,显示用户选中的商品

li = ["努比亚手机", "小米笔记本", 'iphone X', '苹果笔记本']

说明:
enumerate()内置函数的作用

是python的内置函数
enumerate在字典上是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
enumerate多用于在for循环中得到计数

图示:

代码:

li = ["努比亚手机", "小米笔记本", 'iphone X', '苹果笔记本']
for i,v in enumerate(li,1):
    print(i,v)
               # 其中变量i遍历得到的是序列号
               # 其中变量v遍历得到的是列表的每个元素
while True:
    user=input('请输入序号:')
    if not user.isdigit() or int(user)>4 or int(user)==0:
    # 判断用户输入内容的是否不是数字
    # 判断用户输入的数字是否大于4
    # 判断用户输入的数字是否为0
        # 如果满足以上要求则提示用户重新输入,并退出本次循环继续循环
        print('请重新输入数字')
        continue
    print(li[int(user)-1])
    # 将用户输入的序号相对应的商品取出来,并打印

  

注意:

1、列表的索引是从0开始的,而给用户选商品则必须从数字1开始,在使用enumerate()内置函数时,初始的计数就要给数字”1“。

2、isdigit()方法是判断用户输入的内容是否是数字,不包含负数。例如传入一个”-1“时,因为负数占了两个字符了,它会认为是一个”-“和”1“,所以得到的是False

例:

x = input('>>:')
if x.isdigit():
    print('OK')
else:
    print('not ok')

输出结果:

>>:-1
not ok

3、在打印阶段必须减1,是因数初始计数是从数字1开始的,而列表的取值则是从0开始,所以必须减1

 

 

练习4

题目:购物车

功能要求:

用户登陆成功后要求用户输入总资产,例如:20000

显示商品列表,让用户根据序号选择商品,加入购物车

购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。

附加:可充值、某商品移除购物车

goods = [

    {"name": "努比亚手机", "price": 1499},

    {"name": "小米笔记本电脑", "price": 4999},

    {"name": "Iphone X", "price": 7999},

    {"name": "手机壳", "price": 10},

    {"name": "笔记本外壳", "price": 99},

    {"name": "苹果笔记本电脑", "price": 11000},

]

 

代码:

goods = [
    {"name": "努比亚手机", "price": 1499},
    {"name": "小米笔记本电脑", "price": 4999},
    {"name": "Iphone X", "price": 7999},
    {"name": "手机壳", "price": 10},
    {"name": "笔记本外壳", "price": 99},
    {"name": "苹果笔记本电脑", "price": 11000},
]


user = 'knight'
pwd = 'dk123'
j = 1 # 将序列从1开始
b = [] # 用于添加序列,用户的购物车
p = {} # 存放序列和价格
n = {} # 存放序列和商品名
tag = True
while tag:
    username = input('Please enter the username:').strip()
    password = input('Please enter the password:')
    if username == user and password == pwd:
        print('Login successfully!')
        while True:
            user_money = input('Please enter your funds:').strip()
            if user_money.isdigit():
                user_money = int(user_money)
                break
            else:
                print('Please try again.')
        print('********Product List********')
        for i in goods:
            # print(i) # 得到每件商品的字典形式
            print(j,i['name'],i['price'])   # 打印序列,打印每件商品的商品名,打印每件商品的价格
            p[str(j)] = i['price']          # 为字典p添加商品的价格,key为序列,value为商品的价格
            n[str(j)] = i['name']           # 为字典n添加商品的名称,key为序列,value为商品名
            j += 1

        # print(p)
        # # 此时打印p字典得到{'1': 1499, '2': 4999, '3': 7999, '4': 10, '5': 99, '6': 11000}

        # print(n)
        # # 此时打印n字典得到
        # # {'1': '努比亚手机', '2': '小米笔记本电脑', '3': 'Iphone X', '4': '手机壳', '5': '笔记本外壳', '6': '苹果笔记本电脑'}
        print('Please select the product code added to your shopping cart(One at a time, press "7" to complete the selection)')

        while tag:
            user_select = input('Please enter the product code:').strip()
            if not user_select in ['1','2','3','4','5','6','7']:
                print('Please enter the correct product code')
                continue
            elif int(user_select) >= 0 and int(user_select) <=6:
                b.append(user_select)
                continue
            elif len(b) == 0:
                print('The shopping cart is empty')
                continue
            elif user_select == '7':
                while tag:
                    print('This is your shopping list:')
                    if b.count('1') != 0:
                        print('name:%s   number:%s   price:%s'%(n['1'],b.count('1'),b.count('1')*p['1']))
                    if b.count('2') != 0:
                        print('name:%s   number:%s   price:%s'%(n['2'],b.count('2'),b.count('2')*p['2']))
                    if b.count('3') != 0:
                        print('name:%s   number:%s   price:%s'%(n['3'],b.count('3'),b.count('3')*p['3']))
                    if b.count('4') != 0:
                        print('name:%s   number:%s   price:%s'%(n['4'],b.count('4'),b.count('4')*p['4']))
                    if b.count('5') != 0:
                        print('name:%s   number:%s   price:%s'%(n['5'],b.count('5'),b.count('5')*p['5']))
                    if b.count('6') != 0:
                        print('name:%s   number:%s   price:%s'%(n['6'],b.count('6'),b.count('6')*p['6']))


                    s = 0
                    for i in b:
                        s = s + p[i] # 此时的s为购买商品后的总价格
                    if s > user_money:
                        print('Sorry, your balance is not enough,still need ¥%s RMB,please select again.'%(s-int(user_money)))
                        while tag:
                            print('Press "a" to increase the money')
                            print('Press "d" to delete the product')
                            print('Press "q" to quit')
                            print('Press "r" to resubmit')
                            user_select2 = input('Please select:').strip()
                            if not user_select2 in ['a','d','q','r']:
                                print('Please enter again.')
                                continue

                            # 用户充值功能
                            if user_select2 == 'a':
                                while True:
                                    top_up = input('Please top-up:')
                                    if not top_up.isdigit():
                                        print('Try again')
                                        continue
                                    top_up = int(top_up)
                                    break

                                user_money = user_money + top_up
                                break

                            # 删除商品功能
                            if user_select2 == 'd':
                                while True:
                                    print('Your shopping list:')
                                    if b.count('1') != 0 :
                                        print('Number:1   Name:%s   Quantity:%s   Price:%s' % (n['1'], b.count('1'), b.count('1') * p['1']))
                                    if b.count('2') != 0 :
                                        print('Number:1   Name:%s   Quantity:%s   Price:%s' % (n['2'], b.count('2'), b.count('2') * p['2']))
                                    if b.count('3') != 0 :
                                        print('Number:1   Name:%s   Quantity:%s   Price:%s' % (n['3'], b.count('3'), b.count('3') * p['3']))
                                    if b.count('4') != 0 :
                                        print('Number:1   Name:%s   Quantity:%s   Price:%s' % (n['4'], b.count('4'), b.count('4') * p['4']))
                                    if b.count('5') != 0 :
                                        print('Number:1   Name:%s   Quantity:%s   Price:%s' % (n['5'], b.count('5'), b.count('5') * p['5']))
                                    if b.count('6') != 0 :
                                        print('Number:1   Name:%s   Quantity:%s   Price:%s' % (n['6'], b.count('6'), b.count('6') * p['6']))

                                    # 用户输入的钱减去购买商品后的钱。
                                    res1 = int(b.count('1') * p['1'])
                                    res2 = int(b.count('2') * p['2'])
                                    res3 = int(b.count('3') * p['3'])
                                    res4 = int(b.count('4') * p['4'])
                                    res5 = int(b.count('5') * p['5'])
                                    res6 = int(b.count('6') * p['6'])
                                    print('Your balance is ¥%s'%(user_money - res1 -res2 -res3 -res4 -res5 -res6))

                                    while True:
                                        goods_del = input('Please enter the code of the product you intend to delete,(Press "7" to end):').strip()
                                        if not goods_del.isdigit():
                                            print('Try again')
                                            continue
                                        goods_del = int(goods_del)
                                        break
                                    if goods_del == '7':
                                        print('End delete operation')
                                        break
                                    elif not goods_del in ['1','2','3','4','5','6','7'] or not user_money in b:
                                        print('Your shopping cart has no corresponding product!')
                                        continue
                                    elif goods_del >= 0 and goods_del <= 6:
                                        b.remove(goods_del)
                                        continue

                            # 重新提交功能
                            if user_select2 == 'r':
                                break

                            # 退出功能
                            if user_money == 'q':
                                tag = False
                            tag = False
                            print('Exit the purchase,Your balance is ¥%s'%user_money)
                    else:
                        print('The product was successfully added to the shopping cart,Your balance is ¥%s,'%(user_money - s))
                        while tag:
                            user_select3 = input('Press "y" to complete the purchase, continue to buy press "n",y/n:').strip()
                            if not user_select3 in ['y','n']:
                                print('Try again!')
                                continue
                            if user_select3 == 'y':
                                tag = False
                                print('End shopping')
                            if user_select3 == 'n':
                                break
                        tag = False

    else:
        print('Sorry,the username or password you entered is incorrect,please try again!')

  

 

练习5

题目:实现用户交互,显示省市县三级联动的选择

 

dic = {
"江西": {
"萍乡": ["安源", "彭高", "上栗"],
"新余": ["良山", "新钢", "兴安岭"],
},
"北京": {
"大兴区": ["礼贤镇", "魏善庄镇", "北臧村镇"],
"昌平区": ["沙河", "化庄", "白浮泉"],
},
"福建": {
"莆田": ["荔城", "西天尾", "九华山"],
"厦门": ["湖里", "思明", "海仓"],
}
}

 

图示:

 

代码:

dic = {
    "Jiangxi": {
        "Pingxiang": ["Anyuan", "Penggao", "Shangli"],
        "Xinyu": ["Liangshan", "Xingang", "Xinganling"],
        },
    "Peking": {
        "Daxing": ["Lixian", "Weishanzhuan", "Beizang"],
        "Changping": ["Shahe", "Huazhuang", "Baifuquan"],
        },
    "Fujian": {
        "Putian": ["Zhicheng", "Xitianwei", "Jiuhuashan"],
        "Xiamen": ["Huli", "Siming", "Haicang"],
        }
}

print('You can check the following cities information:\n*****Jiangxi,Peking,Fujian*****')

# 让用户查询的省份
while True:
    province = input('Please select the province:').strip()
    if not province in dic:
        print('Did not find what you want to search, please re-enter')
        continue
    break


# 遍历出每个省份中的城市
for i in dic[province]:
    print(i,end=' ')
# 让用户查询城市
while True:
    city = input('Please select the city:').strip()
    if not city in dic[province]:
        print('Did not find what you want to search, please re-enter')
        continue
    break


# 遍历出每个城市中的乡镇
for j in dic[province][city]:
    print(j,end=' ')

 

 

 

 

三、英语

1、str    即string的简写

 [strɪŋ]    n.字符串

2、int    即integer的简写

['ɪntɪdʒɚ]    整型

3、list

 [lɪst]    n.列表

4、tuple

 [ˈtjʊpəl; ˈtʌpəl]    n.元组

5、dict    即dictionaries的简写

 ['dɪkʃən,ɛriz]    n.字典

6、set     即python se的简写t

n.python集合

7、index

 ['ɪndɛks]    n.索引

8、find

 [faɪnd]    vt.查找

9、append

 [ə'pɛnd]    vt.附加、添加

10、pop    即popup的简写

v.删除

11、len    即length的简写

n.长度

12、nest

 [nɛst]    vt.嵌套

13、correct

 [kə'rɛkt]    adj.正确的

14、disabled

[dɪs'ebld]    v.失能

15、incorrect

 [,ɪnkə'rɛkt]    adj.不正确的

 

posted @ 2017-12-10 00:38  暗黒骑士  阅读(610)  评论(0编辑  收藏  举报
levels of contents