作业讲解
# /usr/local/bin/python
# -*- coding: utf-8 -*-
# Author:Ren Hang
"""
一、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
"""
# 方法1
li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
l1 = []
l2 = []
for i in li:
if i < 66:
l1.append(i)
elif i > 66:
l2.append(i)
temp = {"k1": l1, "k2": l2}
print(temp)
# {'k1': [11, 22, 33, 44, 55], 'k2': [77, 88, 99, 90]}
# 方法2
li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dic = {
'k1': [],
'k2': []
}
for i in li:
if i < 66:
dic["k1"].append(i)
elif i > 66:
dic["k2"].append(i)
print(dic)
# {'k1': [11, 22, 33, 44, 55], 'k2': [77, 88, 99, 90]}
"""
二、查找
查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}
"""
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}
# 方法1
# 循环li
for i in li:
new_i = i.strip() # 去除空格
if (new_i.startswith("a") or new_i.startswith("A")) and new_i.endswith("c"):
print("a1", i)
# 循环tu
for i in li:
new_i = i.strip() # 去除空格
if (new_i.startswith("a") or new_i.startswith("A")) and new_i.endswith("c"):
print("b2", i)
# 循环dic
for i in dic.values():
new_i = i.strip()
if (new_i.startswith("a") or new_i.startswith("A")) and new_i.endswith("c"):
print("c3", i)
# 方法2
# 循环li
for i in li:
b = i.strip() # 去除空格
# print(b)
if b.startswith("a") and b.endswith("c"): # 判断以a开头以c结束的元素
print("1", b) # 输出元素
elif b.startswith("A") and b.endswith("c"): # 判断以A开头以c结束的元素
print("2", b) # 输出元素
# 循环tu
for i in tu:
b = i.strip() # 去除空格
# print(b)
if b.startswith("a") and b.endswith("c"): # 判断以a开头以c结束的元素
print("3", b) # 输出元素
elif b.startswith("A") and b.endswith("c"): # 判断以A开头以c结束的元素
print("4", b) # 输出元素
# 循环dic
for k, v in dic.items():
b1 = k.strip() # 去除空格
b2 = v.strip() # 去除空格
if b1.startswith("a") and b1.endswith("c"): # 判断以a开头以c结束的元素
print("5", b1) # 输出元素
elif b1.startswith("A") and b1.endswith("c"): # 判断以A开头以c结束的元素
print("6",b1) # 输出元素
elif b2.startswith("a") and b2.endswith("c"): # 判断以a开头以c结束的元素
print("7", b2) # 输出元素
elif b2.startswith("A") and b2.endswith("c"): # 判断以A开头以c结束的元素
print("8", b2) # 输出元素
# 三、输出商品列表,用户输入序号,显示用户选中的商品
li = ["手机", "电脑", '鼠标垫', '游艇']
# 方法1
while True:
for i, j in enumerate(li):
print(i+1, j)
num = input("num:")
if num.isdigit():
num = int(num)
if 0 < num < len(li):
print(li[num-1])
break
else:
print("输入错误!请输入商品对应的编号:")
else:
print("输入错误!请输入商品对应的编号:")
"""
四、购物车
功能要求:
1.要求用户输入总资产,例如:2000
2.显示商品列表,让用户根据序号选择商品,加入购物车
3.购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
4.附加:可充值、某商品移除购物车
"""
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
# 方法2
# asset_all 总资产
asset_all = 0
# car_dict 购物车
car_dict = {}
# all_pric 已经购买所以的商品总价
all_price = 0
# all_sum 已经购买单个的商品总价
all_sum = 0
i1 = input("请输入总资产:")
asset_all = int(i1)
for i in goods:
print(i["name"], i["price"])
while True:
i2 = input("【Y/y:结算】输入要购买的商品名称:")
if i2.lower() == "y":
break
for item in goods:
if item["name"] == i2:
name = item["name"]
if name in car_dict.keys():
car_dict[name]["num"] += 1
else:
car_dict[name] = {"num": 1, "single_price": item["price"]}
print(car_dict)
for k, v in car_dict.items():
all_sum = v["num"] * v["single_price"]
all_price += all_sum
if all_price > asset_all:
print("余额不足!")
else:
print("购买成功!”)
"""
五、用户交互,显示省市县三级联动的选择
"""
dic = {
"北京": {
"朝阳区": ["123", "456"],
"崇文区": ["789", "101"]
},
"辽宁省": {
"沈阳市": ["铁西区", "沈河区"],
"锦州市": ["古塔区", "黑山县"],
},
}
# 方法1
# 循环输出所以的省
for x in dic:
print(x)
i1 = input("请输入省份:")
a = dic[i1]
# 循环输出所以的市
for j in a:
print(j)
i2 = input("请输入市:")
b = dic[i1][i2]
for z in b:
print(z)