(十)Python学习之基本数据类型及其常用操作练习(3)
练习11
用户交互显示类似省市县N级联动的选择:
a.允许用户增加内容;
b.允许用户选择查看某一个级别的内容。
dic = {
"江西": {
"萍乡": ["安源", "彭高", "上栗"],
"新余": ["良山", "新钢", "兴安岭"],
},
"北京": {
"大兴区": ["礼贤镇", "魏善庄镇", "北臧村镇"],
"昌平区": ["沙河", "化庄", "白浮泉"],
},
"福建": {
"莆田": ["荔城", "西天尾", "九化山"],
"厦门": ["湖里", "思明", "海仓"],
}
}
print("目前可查询的省份:江西、北京、福建")
province = input("请输入省份或者输入N新建: ")
if province == "N":
new_province = input("请输入省份:")
new_city = input("请输入城市:")
new_town = input("请输入城镇信息:")
dic[new_province] = {new_city: [new_town]}
while province not in dic:
print("输入错误省份,请从新输入")
province = input("请输入省份或者输入N新建: ")
while province in dic:
new_menu = dic[province]
for k in new_menu:
print(k, end="\n")
choice_city = input("请输入城市:")
if choice_city not in new_menu:
print("错误城市输入,请从新输入: ")
continue
else:
new_menu2 = new_menu.get(choice_city)
for i in new_menu2:
print(i, end="\n")
choice_town = input("请输入城镇信息:")
if choice_town in new_menu2:
print(
"信息输入正确,省份:{},城市:{},城镇:{}".format(
province,
choice_city,
choice_town))
break
练习12
列举布尔值是False的所有值。
None,False(布尔类型),0(所有的值为零的数),""(空字符串),,()(空元组),{}(空字典)
练习13
有两个列表
l1 = [11, 22, 33]
l2 = [22, 33, 44]
a.获取内容相同的元素列表;
b.获取l1中有,l2中没有的元素列表;
c.获取l2中有,l1中没有的元素列表;
d.获取l1和l2中内容不同的元素。
l1 = [11, 22, 33]
l2 = [22, 33, 44]
a = []
for i in l1:
for j in l2:
if i == j:
a.append(i)
print(a)
b = []
for i in l1:
flag = 0
for j in l2:
if i == j:
flag = 1;
if flag == 0:
b.append(i)
print(b)
c = []
for i in l2:
flag = 0
for j in l1:
if i == j:
flag = 1;
if flag == 0:
c.append(i)
print(c)
d = []
for i in b:
d.append(i)
for i in c:
d.append(i)
print(d)
练习14
利用for循环和range输出:
a.for循环从大到小输出1-100;
b.for循环从小到大输出100-1;
c.while循环从大到小输出1-100;
d.while循环从小到大输出100-1。
for i in range(1, 101):
print(i, end=" ")
print("")
for i in range(100, 0, -1):
print(i, end=" ")
print("")
count = 1
while count <= 100:
print(count, end=" ")
count += 1
print("")
count = count -1
while count >= 1:
print(count, end=" ")
count -= 1
练习15
购物车
功能要求:
-要求用户输入总资产,例如2000;
-显示商品列表,让用户根据序号选择商品,加入购物车;
-购买,如果商品总额大于总资产,提示账户余额不足,否则购买成功。
goods = [
{“name”: “电脑”, “price”: 1999},
{“name”: “鼠标”, “price”: 10},
{“name”: “游艇”, “price”: 20},
{“name”: “美女”, “price”: 998},
]
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
account = int(input("请输入您的资产:"))
i = 0
dic = {}
for el in goods:
i += 1
dic.setdefault(str(i) + el["name"], el["price"]) # 使用字符串拼接,把序号加到键前面
print(dic)
lst = [] # 创建一个列表形式的购物车
money = 0 # 购物车中初始值为0
while 1:
ret = input("请输入您要买的东西序号(q退出.n结算):").strip()
if ret.isdigit():
for el in dic:
if ret == el[0]: # 利用切片得到商品序号,判断用户输入的序号是否是商品序号
lst.append(el[1:]) # 将商品添加到列表中
money += dic[el] # 计算购物车中商品的总价
print("购物车中有:%s,消费总额为%s" % ([i for i in lst], money))
elif ret.upper() == "Q": # 执行退出操作
print("退出成功!\n余额还有%s" % account)
break
elif ret.upper() == "N": # 执行结算操作
blance = account - money # 余额 = 资产 - 消费总额
if blance < 0:
print("您的余额不足!!!")
else:
print("购买成功,花费了%d,余额还剩%s" % (money, blance))
break
else:
print("输入有误,请再次输入!!!")
练习16
分页显示内容
a.通过for循环创建301条数据,数据类型不限,如:
alex-1 alex1@live.com pwd1
alex-2 alex2@live.com pwd2
alex-3 alex3@live.com pwd3
…
b.提示用户请输入要查看的页码,当用户输入指定页码,则显示指定数据;
注意:
-每页显示10条数据
-用户输入页码是非十进制数字,则提示输入内容格式错误
user_list = []
for i in range(1, 302):
temp = {"name": "alex-" + str(i), "email": "alex" + str(i) + "live.com", "pwd": "pwd" + str(i)}
user_list.append(temp)
v = input("请输入页码:")
v = int(v)
start = (v-1)*10
end = v*10
user_temp = user_list[start: end]
for i in user_temp:
print(i)
练习17
有1、2、3、4、5、6、7、8八个数字,能组成多少个互不相同且无重复数字的两位数?
count = 0
for i in range(1, 9):
for j in range(1, 9):
if i != j:
count += 1
print(count)
练习18
利用for循环和range输出9*9乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(str(j)+"*"+str(i)+"="+str(i*j), end=" ")
print("")
练习19
有一下列表
nums = [2, 7, 11, 15, 1, 8, 7]
请找到列表中任意两个元素相加能够等于9的元素集合,如:[(0, 1), (4, 5)]
nums = [2, 7, 11, 15, 1, 8, 7]
v = []
for i in nums:
for j in nums:
if i + j ==9:
v.append((i, j,))
print(v)
练习20
用python开发程序自动计算方案:
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
for i in range(1, 100//5+1):
for j in range(1, 100//3+1):
for k in range(1, 100):
if i + j + k == 100 and 5 * i +3 * j + k/3 == 100:
print("公鸡数:", i, "母鸡数:", j, "小鸡数:", k)