python基础_字典_列表_元组考试_day4
1、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain']
1 li=['alex','eric','rain'] 2 v="_".join(li) 3 print(v)
执行结果:
1 alex_eric_rain
2、查找列表中元素,移除每个元素的空格,并查找以a或A开头并且以c结尾的所有元素。
li=["alec","aric","Alex","Tony","rain"]
tu=("alec","aric","Alex","Tony","rain")
dic={'k1':"alex",'k2':'aric',"k3":"Alex","k4":"Tony"}
1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # Author: nulige
4
5 li = ["alec", "aric", "Alex", "Tony", "rain"]
6 tu = ("alec", "aric", "Alex", "Tony", "rain")
7 dic = {'k1': "alex", 'k2': 'aric', "k3": "Alex", "k4": "Tony"}
8
9 list1 = list(tu)
10 list2 = list(dic.values())
11 newlist = li + list1 + list2
12 for i in newlist:
13 ret = i.strip() #i.strip():删除字符串当前行首尾的的空格
14 if (ret.startswith('a') or ret.startswith('A')) and ret.endswith('c'): #startswith查看是否已什么开始,endswith查看是否已什么结尾
15 print(ret)
执行结果:
1 alec 2 aric 3 alec 4 aric 5 aric
3、写代码,有如下列表,按照要求实现每一个功能
li=['alex','eric','rain']
a.计算列表长度并输出
1 li = ['alex', 'eric', 'rain'] 2 v = len(li) 3 print(v)
执行结果:
1 3
b.列表中追加元素“seven”,并输出添加后的列表
1 li = ['alex', 'eric', 'rain']
2 li.append(str("seven"))
3 print(li)
执行结果:
1 ['alex', 'eric', 'rain', 'seven']
c.请在列表的第1个位置插入元素“Tony”,并输出添加后的列表
1 li = ['alex', 'eric', 'rain'] 2 li.insert(1,"Tony") 3 print(li)
执行结果:
1 ['alex', 'Tony', 'eric', 'rain']
d.请修改列表第2个位置的元素为“Kelly”,并输出修改后的列表
1 li = ['alex', 'eric', 'rain'] 2 li[1] = "Kelly" 3 print(li)
执行结果:
1 ['alex', 'Kelly', 'rain']
e.请删除列表中的元素“eric”,并输出修改后的列表
1 li = ['alex', 'eric', 'rain']
2 li.remove("eric")
3 print(li)
执行结果:
1 ['alex', 'rain']
元素的值和删除元素后的列表 执
1 li = ['alex', 'eric', 'rain'] 2 del li[1] 3 print(li) 4 n1 = li.pop(1) 5 print(n1)
执行结果:
1 ['alex', 'rain'] 2 rain
g.请删除列表中的第3个元素,并输出删除元素后的列表
1 li = ['alex', 'eric', 'rain'] 2 li.pop(2) 3 print(li)
执行结果:
1 ['alex', 'eric']
h.请删除列表中的第2至4个元素,并输出删除元素后的列表
1 li = ['alex', 'eric', 'rain', 'sic'] 2 del li[1:4] 3 print(li)
执行结果:
1 ['alex']
i.请将列表所有的元素反转,并输出反转后的列表
1 li = ['alex', 'eric', 'rain'] 2 li.reverse() 3 print(li)
执行结果:
1 ['rain', 'eric', 'alex']
j.请使用for、len、range输出列表的索引
1 li = ['alex', 'eric', 'rain'] 2 for i in range(len(li)): 3 print(i)
执行结果:
1 0 2 1 3 2
k.请使用enumrate输出列表元素和序号(序号从100开始)
1 li = ['alex', 'eric', 'rain'] 2 for k,v in enumerate(li,100): 3 print(k,v)
执行结果:
1 100 alex 2 101 eric 3 102 rain
l.请使用for循环输出列表的所有元素
1 li = ['alex', 'eric', 'rain'] 2 for ltem in li: 3 print(ltem)
执行结果:
1 alex 2 eric 3 rain
4、写代码,有如下列表,请按照功能要求实现每一个功能
li=["hello",'seven',["mon",["h","kelly"],'all'],123,446]
a.请根据索引输出“Kelly”
1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] 2 print(li[2][1][1])
执行结果:
1 kelly
b.请使用索引找到'all'元素并将其修改为“ALL”,如:li[0][1][9]...
1 li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
2 index = li[2].index("all")
3 li[2][index] = "ALL"
4 print(li)
执行结果:
1 ['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]
5、写代码,有如下元组,按照要求实现每一个功能
tu=('alex','eric','rain')
a.计算元组长度并输出
1 tu = ('alex', 'eric', 'rain')
2 n1 = len(tu)
3 print(n1)
执行结果:
1 3
b.获取元组的第2个元素,并输出
1 tu = ('alex', 'eric', 'rain')
2 v = tu[1]
3 print(v)
执行结果:
1 eric
c.获取元组的第1-‐2个元素,并输出
方法一:
1 tu = ('alex', 'eric', 'rain')
2 v = tu[:2]
3 print(v)
执行结果:
1 ('alex', 'eric')
方法二:
1 tu = ('alex', 'eric', 'rain')
2 n1 = tu[1]
3 n2 = tu[2]
4 print(n1 + " " + n2)
执行结果:
1 eric rain
d.请使用for输出元组的元素
1 tu = ('alex', 'eric', 'rain')
2 for i in tu:
3 print(i)
执行结果:
1 alex 2 eric 3 rain
e、请删除列表中的元素"eric",并输出修改后的列表
1 li = ['alex', 'eric', 'rain']
2 li.remove("eric")
3 print(li)
执行结果:
1 ['alex', 'rain']
f.请使用for、len、range输出元组的索引
1 tu = ('alex', 'eric', 'rain')
2 for i in range(len(tu)):
3 print(i)
执行结果:
1 alex 2 eric 3 rain
g.请使用enumrate输出元祖元素和序号(序号从10开始)
1 tu = ('alex', 'eric', 'rain')
2 for k,v in enumerate(tu,10):
3 print(k,v)
执行结果:
1 10 alex 2 11 eric 3 12 rain
6、有如下变量,请实现要求的功能
tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
a.讲述元祖的特性
答:元组具有列表的全部特性,不同的是,元组的元素不能修改
b.请问tu变量中的第一个元素“alex”是否可被修改?
答:不能
c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”
答:列表 ,可以
1 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
2 tu[1][2]["k2"].append("Seven")
3 print(tu)
执行结果:
1 ('alex', [11, 22, {'k3': (11, 22, 33), 'k1': 'v1', 'k2': ['age', 'name', 'Seven']}, 44])
d.请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”
答: 元组,不能
1 tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
2 tu[1][2]["k3"].append("Seven")
3 print(tu)
执行结果:
1 Traceback (most recent call last):
2 File "D:/python/job4.py", line 154, in <module>
3 tu[1][2]["k3"].append("Seven")
4 AttributeError: 'tuple' object has no attribute 'append' #元组不能被修改
7、字典
dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
a.请循环输出所有的key
1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 for ltem in dic:
3 print(ltem)
执行结果:
1 k1 2 k2 3 k3
b.请循环输出所有的value
1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 for item in dic.values():
3 print(item)
执行结果:
1 v2 2 v1 3 [11, 22, 33]
c.请循环输出所有的key和value
1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 for k,v in dic.items():
3 print(k,v)
执行结果:
1 k3 [11, 22, 33] 2 k2 v2 3 k1 v1
d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典
1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k4"] = "v4"
3 print(dic)
执行结果:
1 {'k4': 'v4', 'k3': [11, 22, 33], 'k1': 'v1', 'k2': 'v2'}
e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k1"] = "alex"
3 print(dic)
执行结果:
1 {'k2': 'v2', 'k3': [11, 22, 33], 'k1': 'alex'}
f.请在k3对应的值中追加一个元素44,输出修改后的字典
1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k3"].append(44)
3 print(dic)
执行结果:
1 {'k2': 'v2', 'k1': 'v1', 'k3': [11, 22, 33, 44]}
g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
1 dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
2 dic["k3"].insert(0,18)
3 print(dic)
执行结果:
1 {'k2': 'v2', 'k3': [18, 11, 22, 33], 'k1': 'v1'}
8、转换
a.将字符串s="alex"转换成列表
1 s = "alex" 2 n1 = list(s) 3 print(n1)
执行结果:
1 ['a', 'l', 'e', 'x']
b.将字符串s="alex"转换成元祖
1 s = "alex" 2 n1 = tuple(s) 3 print(n1)
执行结果:
1 ['a', 'l', 'e', 'x']
b.将列表li=["alex","seven"]转换成元组
1 li = ["alex","seven"] 2 n1 = tuple(li) 3 print(n1)
执行结果:
1 ('alex', 'seven')
c.将元祖tu=('Alex',"seven")转换成列表
1 tu = ('Alex',"seven")
2 n1 = list(tu)
3 print(n1)
执行结果:
1 ('alex', 'seven')
d.将列表li=["alex","seven"]转换成字典且字典的key按照10开始向后递增
1 li = ["alex","seven"]
2 n1 = {}
3 for k,v in enumerate(li,10):
4 n1[k] = v
5 print(n1)
执行结果:
1 {10: 'alex'}
2 {10: 'alex', 11: 'seven'}
9、元素分类
有如下值集合[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]
2 li.sort() #排序
3 z = li.index(66)
4 l = len(li)
5 dic = {"k1": li[z + 1:l], "k2": li[0:z]}
6 print(dic)
执行结果:
1 {'k1': [77, 88, 90, 99], 'k2': [11, 22, 33, 44, 55]}
法二:
1 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
2 li.sort()
3 lo = []
4 lp = []
5 for i in li:
6 if i < 66:
7 lo.append(i)
8 elif i > 66:
9 lp.append(i)
10 dic = {"k1": lo, "k2": lp}
11 print(dic)
执行结果:
1 {'k1': [11, 22, 33, 44, 55], 'k2': [77, 88, 90, 99]}
10、输出商品列表,用户输入序号,显示用户选中的商品
商品li=["手机","电脑",'鼠标垫','游艇']
a.允许用户添加商品
b.用户输入序号显示内容
1 print("商品列表信息,用户输入序号,显示用户选中的商品")
2 li = ["手机", "电脑", '鼠标垫', '游艇']
3 for i, v in enumerate(li, 1):
4 print(i, v)
5 x = input("是否添加商品?")
6 if x == "y" or x == "Y" or x == "yes":
7 t = input("请添加商品:")
8 li.append(t)
9 for i, v in enumerate(li, 1):
10 print(i, v)
11 s = input("是否查找商品?")
12 if s == "y" or s == "Y" or s == "yes":
13 y = int(input("请输入查找的序号"))
14 print(li[y -1]) # -1 是取下标,默认是从0开始的,-1就是从1开始
执行结果:
1 商品列表信息,用户输入序号,显示用户选中的商品 2 1 手机 3 2 电脑 4 3 鼠标垫 5 4 游艇 6 是否添加商品?y 7 请添加商品:锅 8 1 手机 9 2 电脑 10 3 鼠标垫 11 4 游艇 12 5 锅 13 是否查找商品?y 14 请输入查找的序号1 15 手机
11、用户交互显示类似省市县N级联动的选择
a.允许用户增加内容
b.允许用户选择查看某一个级别内容
1 #!/usr/bin/env python
2 # -*- coding=utf-8 -*-
3 # Created on: 2016年11月29日
4 # @author: 郑建文
5 # Email: 574601624@qq.com
6 # Version: 1.0
7
8
9 city = {"北京":{"朝阳":["大望路","国贸"],
10 "昌平":["沙河","昌平"]},
11 "河北":{"张家口":["沙城","宣化"],
12 "石家庄":["某某路","某某街"]}
13 }
14 go = True
15 while go:
16 cc = []
17 dq = []
18 print("\33[31;1m一级列表\33[1m".center(40,"="))
19 for i,v in enumerate(city,1):
20 print(i,v)
21 cc.append(v)
22 print("\33[35;1m插入数据 i 退出按Q\33[1m")
23 u_c1 = str(input(">>>"))
24 if u_c1.isdigit():#进二级之前判断
25 u_c1 = int(u_c1)
26 if u_c1 >0 and u_c1 <=len(cc):
27 while go:
28 print("\33[32;1m二级列表\33[1m".center(40, "="))
29 for i1,v1 in enumerate(city[cc[u_c1-1]],1):
30 print(i1,v1)
31 dq.append(v1)
32 print("\33[35;1m退出按Q 返回 B\33[1m")
33 u_c2 = input(">>>")
34 if u_c2.isdigit():#进三级之前判断
35 u_c2 = int(u_c2)
36 if u_c2 >0 and u_c2<=len(dq):
37 while go:
38 print("\33[32;1m三级列表\33[1m".center(40, "="))
39 for s in city[cc[u_c1-1]][dq[u_c2-1]]:
40 print(s)
41 print("\33[35;1m退出按Q 返回 B\33[1m")
42 u_c3 = input(">>>")
43 if u_c3 == "q" or u_c3 == "Q":
44 go = False
45 break
46 if u_c3 == "b" or u_c3 =="B":
47 del dq[:]
48 break
49 else:
50 print("\33[31;1m输入不正确\33[1m")
51 else:
52 print("\33[31;1m输入超出范围!\33[1m")
53 elif u_c2 == "q" or u_c2 == "Q":
54 go = False
55 break
56 elif u_c2 == "b" or u_c2 == "B":
57 del cc[:]
58 del dq[:]
59 break
60 else:
61 print("\33[31;1m输入格式不对!\33[1m")
62 elif u_c1.isalpha():
63 if u_c1 == "q" or u_c1 == "Q":
64 break
65 elif u_c1 == "i" or u_c1 == "I":
66 print("\33[32;1m添加信息\33[1m".center(40,"="))
67 ct_name = input("省:")
68 if ct_name == "Q" or ct_name == "q":
69 break
70 else:
71 if city.get(ct_name,0) == 0:
72 city[ct_name] = {}
73 dq_name = input("市:")
74 if dq_name == "Q" or dq_name == "q":
75 break
76 else:
77 if city[ct_name].get(dq_name,0) == 0:
78 city[ct_name][dq_name]=[]
79 while True:
80 print("\33[31;1m循环添加,退出请按Q!\33[1m")
81 s = input("县:")
82 if s == "q" or s == "Q":
83 break
84 else:
85 city[ct_name][dq_name].append(s)
86 else:
87 print("\33[31;1m输入超出范围!\33[1m")
88 else:
89 print("\33[31;1m输入格式不对!\33[1m")
12、列举布尔值是False的所有值
1 None "" () [] {} 0
13︎、有两个列表
l1=[11,22,33]
l2=[22,33,44]
a.获取内容相同的元素列表
1 n1 = [11,22,33] 2 n2 = [22,33,44] 3 for i in n1: 4 if i in n2: 5 print(i)
执行结果:
1 22 2 33
b.获取l1中有,l2中没有的元素列表
1 l1 = [11, 22, 33] 2 l2 = [22, 33, 44] 3 for i in l1: 4 if i not in l2: 5 print(i)
执行结果:
1 44 2 11
c.获取l2中有,l1中没有的元素列表
1 l1 = [11, 22, 33] 2 l2 = [22, 33, 44] 3 for i in l2: 4 if i not in l1: 5 print(i)
执行结果:
1 44
d.获取l1和l2中内容都不同的元素
1 l1 = [11, 22, 33] 2 l2 = [22, 33, 44] 3 for i in l2: 4 if i not in l1: 5 print(i) 6 for v in l1: 7 if v not in l2: 8 print(v)
执行结果:
1 44 2 11
14、利用For循环和range输出
a.For循环从大到小输出1-100
1 for i in range(100,0,-1): 2 print(i)
b.For循环从小到到输出100-1
1 for i in range(1,101): 2 print(i)
c.While循环从大到小输出1-100
1 while True: 2 a = 100 3 for i in range(100): 4 print(a-i) 5 break
d.While循环从小到到输出100-1
1 while True: 2 for i in range(100): 3 print(i+1) 4 break
15、购物车
功能要求:
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods=[
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998},
]
代码如下:
方法一:
1 shop_cart = []
2 goods = [
3 {"name":"电脑","price":1999},
4 {"name":"鼠标","price":10},
5 {"name":"游艇","price":20},
6 {"name":"美女","price":988},
7 ]
8 while True:
9 salary = input("请输入用户余额[quit]:")
10 if salary.isdigit():
11 salary = int(salary)
12 break
13 elif salary == "quit":
14 exit("不想购买")
15 else:
16 print("please the enter number")
17 while True:
18 print("shop list".center(50, '*'))
19 for index,i in enumerate(goods):
20 print(index,i)
21 choose_number = input("请输入购买商品编号[quit]:")
22 if choose_number.isdigit():
23 choose_number = int(choose_number)
24 product_list = []
25 if 0 <= choose_number <= len(goods):
26 product_list.append(goods[choose_number])
27 if salary >= product_list[0]["price"]:
28 shop_cart.append(goods[choose_number])
29 salary -= product_list[0]['price']
30 print("当前购买的商品",product_list,"当前用户余额\033[1;31m{salary}\033[0m".format(salary=salary))
31 else:
32 print("余额不足")
33 else:
34 print("无效的商品编号")
35 elif choose_number.lower() == 'quit':
36
37 print("购买的商品".center(50,"*"))
38 for y in shop_cart:
39 print(y)
40 exit()
41 else:
42 print("无效的输入")
执行结果:
1 请输入用户余额[quit]:2000
2 ********************shop list*********************
3 0 {'name': '电脑', 'price': 1999}
4 1 {'name': '鼠标', 'price': 10}
5 2 {'name': '游艇', 'price': 20}
6 3 {'name': '美女', 'price': 988}
7 请输入购买商品编号[quit]:1
8 当前购买的商品 [{'name': '鼠标', 'price': 10}] 当前用户余额1990
9 ********************shop list*********************
10 0 {'name': '电脑', 'price': 1999}
11 1 {'name': '鼠标', 'price': 10}
12 2 {'name': '游艇', 'price': 20}
13 3 {'name': '美女', 'price': 988}
14 请输入购买商品编号[quit]:2
15 当前购买的商品 [{'name': '游艇', 'price': 20}] 当前用户余额1970
16 ********************shop list*********************
17 0 {'name': '电脑', 'price': 1999}
18 1 {'name': '鼠标', 'price': 10}
19 2 {'name': '游艇', 'price': 20}
20 3 {'name': '美女', 'price': 988}
21 请输入购买商品编号[quit]:3
22 当前购买的商品 [{'name': '美女', 'price': 988}] 当前用户余额982
23 ********************shop list*********************
24 0 {'name': '电脑', 'price': 1999}
25 1 {'name': '鼠标', 'price': 10}
26 2 {'name': '游艇', 'price': 20}
27 3 {'name': '美女', 'price': 988}
28 请输入购买商品编号[quit]:0
29 余额不足
30 ********************shop list*********************
31 0 {'name': '电脑', 'price': 1999}
32 1 {'name': '鼠标', 'price': 10}
33 2 {'name': '游艇', 'price': 20}
34 3 {'name': '美女', 'price': 988}
35 请输入购买商品编号[quit]:quit
36 **********************购买的商品***********************
37 {'name': '鼠标', 'price': 10}
38 {'name': '游艇', 'price': 20}
39 {'name': '美女', 'price': 988}
40
41 Process finished with exit code 0
方法二:(郑建文版本)
1 #!/usr/bin/env python
2 # -*- coding=utf-8 -*-
3 # Created on: 2016年11月29日
4 # @author: 郑建文
5 # Email: 574601624@qq.com
6 # Version: 1.0
7 '''
8 要求用户输入总资产,例如:2000 显示商品列表,让用户根据序号选择商品,
9 加入购物车 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
10
11 本程序功能:可以添加购买商品,一起结算,可以查看已结算和没结算的,商品重复的是有数量的
12 '''
13 goods = [
14 {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20},
15 {"name": "美女", "price": 998},
16 ]
17 while True:
18 print("\33[31;1m+++++++输入q退出++++++++\33[1m")
19 money = str(input("\33[32;1m请输入初始余额:\33[1m"))
20 if money.isdigit():
21 money = int(money)
22 go = True
23 break
24 else:
25 if money.lower() == "q":
26 go = False # 用于控制下面程序运行
27 print("再见!")
28 break
29 else:
30 print("输入格式错误")
31
32 buy_car = [] # 购物车
33 while go:
34 #print(buy_car)
35 print("\33[35;1m购物商城\33[1m".center(50, "="))
36 print("序号|名称|单价")
37 for i, v in enumerate(goods, 1):
38 print(i, v["name"], v["price"])
39 print("q.退出 o.结算 k.购物车")
40 buy = str(input(">>>"))
41 if buy.isdigit():#购物
42 buy = int(buy)
43 if buy > 0 and buy < len(goods):#是否存在
44 for s in buy_car:
45 if s["name"] == goods[buy-1]["name"] and s['js'] == 0 :#如果存在
46 tem = goods[buy-1]
47 tem["js"] = 0 #结算标示
48 tem["sl"] += 1 #数量
49 print("\33[32;1m添加商品 %s 成功!\33[1m" % (goods[buy - 1]["name"]))
50 buy = 0
51 break
52 if buy:#不存在
53 tem = goods[buy - 1]
54 tem["js"] = 0 # 结算标示
55 tem["sl"] = 1 # 数量
56 buy_car.append(tem)
57 print("\33[32;1m添加商品 %s 成功!\33[1m" % (goods[buy - 1]["name"]))
58
59 else:
60 print("\33[31;1m没有此商品\33[1m")
61 else:
62 if buy.lower() == "q": # 退出
63 break
64 elif buy.lower() == "o": # 结算
65 all_price = 0
66 for i in buy_car:#计算金额
67 if i["js"] == 0:
68 ret = i['price'] * i['sl']
69 all_price += ret
70 if all_price <= money and all_price >0:#结算
71 for i in buy_car:
72 i['js'] = 1
73 money -= all_price
74 print("结算成功,共消费:%d元,余额为:%d元"%(all_price,money))
75 elif all_price == 0:#无购物
76 print("\33[31;1m请先购物!\33[1m")
77 else:#金额不足
78 print("\33[31余额不足,请删除一些商品\33[1m")
79 elif buy.lower() == "k":
80 u_js = input("1.结算完毕 2.未结算 \n>>>")
81 if u_js == "1":#已经结算的
82 print("\33[32;1m已结算购物车\33[1m".center(50,"="))
83 print("序号|名称|数量|单价")
84 for i,v in enumerate(buy_car,1):
85 if v["js"] == 1:
86 print(i,v['name'],v['sl'],v['price'])
87 elif u_js == "2":#没有结算的,可以删除
88 if len(buy_car) > 0:
89 while go:
90 for i, v in enumerate(buy_car,1):
91 if v["js"] == 0:
92 print(i, v["name"], v["price"],v['sl'])
93 u_d = input("\33[31;1m选序号删除,退出q 返回 b\33[1m \n>>>")
94 if u_d.isdigit():
95 u_d = int(u_d)
96 if u_d > 0 and u_d <= len(buy_car):
97 u_sl = input("请输入数量:")
98 if u_sl.isdigit():
99 u_sl = int(u_sl)
100 if u_sl < buy_car[u_d]['sl']:
101 buy_car[u_d]['sl'] -= u_sl
102 print("\33[32;1m删除商品成功!\33[1m")
103 elif u_sl == buy_car[u_d]['sl']:
104 del buy_car[u_d-1]
105 print("\33[32;1m删除商品成功!\33[1m")
106 else:
107 print("超出范围或者输入不正确")
108
109 else:
110 if u_d.lower() == "q":
111 go = False
112 print("再见")
113 if u_d.lower() == "b":
114 break
115 else:
116 print("\33[31;1m无商品或还没有结算,请先购买!\33[1m")
117 else:
118 print("\33[31;1m输入格式不对!\33[1m")
16、分页显示内容
a.通过for循环创建301条数据,数据类型不限,如:
alex-‐1alex1@live.compwd1
alex-‐2alex2@live.compwd2
alex-‐3alex3@live.compwd3
...
法一:
1 for i in range(301): 2 a = "alex- - %salex%s@live.com pwd%s"%(i+1,i+1,i+1) 3 print(a)
法二:
1 u = []
2 for i in range(301):
3 a = "alex{0} alex{0}@live.com pwd{0}".format(i+1)
4 x = [a]
5 u = u + x
6 print(u[0:10])
b.提示用户请输入要查看的页码,当用户输入指定页码,则显示指定数据
注意:
-‐每页显示10条数据
-‐用户输入页码是非十进制数字,则提示输入内容格式错误
1 while True:
2 u = []
3 for i in range(301):
4 a = "alex{0} alex{0}@live.com pwd{0}".format(i+1)
5 x = [a]
6 u = u + x
7 # print(u[0:10])
8 s = input("请输入您想查看的页码:")
9 v3 = s.isnumeric() #检测字符串是否只由数字组成,如果字符串中只包含数字字符,则返回 True,否则返回 False
10 if v3 == False :
11 print("输入内容格式错误")
12
13 elif int(s) < 1 or int(s) > 31:
14 print("输入页码错误")
15
16 else:
17 s = int(s)
18 a = (s-1)*10
19 b = s*10
20 j = (u[a:b])
21 for g in j:
22 print(g)
23 A =input("是否继续查看(y or Y)")
24 if A =="y" or A =="Y":
25 continue
26 else:
27 break
执行结果:
1 请输入您想查看的页码:1 2 alex1 alex1@live.com pwd1 3 alex2 alex2@live.com pwd2 4 alex3 alex3@live.com pwd3 5 alex4 alex4@live.com pwd4 6 alex5 alex5@live.com pwd5 7 alex6 alex6@live.com pwd6 8 alex7 alex7@live.com pwd7 9 alex8 alex8@live.com pwd8 10 alex9 alex9@live.com pwd9 11 alex10 alex10@live.com pwd10 12 是否继续查看(y or Y)y 13 请输入您想查看的页码:2 14 alex11 alex11@live.com pwd11 15 alex12 alex12@live.com pwd12 16 alex13 alex13@live.com pwd13 17 alex14 alex14@live.com pwd14 18 alex15 alex15@live.com pwd15 19 alex16 alex16@live.com pwd16 20 alex17 alex17@live.com pwd17 21 alex18 alex18@live.com pwd18 22 alex19 alex19@live.com pwd19 23 alex20 alex20@live.com pwd20 24 是否继续查看(y or Y)
17、有1、2、3、4、5、6、7、8、8个数字,能组成多少个互不相同且无重复数字的两位数?
法一:
1 count = 0 2 for i in range(1, 9): 3 for x in range(1, 9): 4 if i != x: 5 print(i, x,) 6 count += 1 7 print(count)
执行结果:
View Code
方法二:
1 li = []
2 for i in range(1, 9):
3 for x in range(1, 9):
4 a = ("{0}{1}".format(i, x,)) #把两个数组合在一起
5 if a not in li: #判断a是不是在li[]里面
6 if i != x: #相等就往上,再循环
7 li.append(a)
8 print(li)
9 print(len(li))
方法三:
1 count = 0
2 li = []
3 for i in range(1, 9):
4 for x in range(1, 9):
5 a = ("{0}{1}".format(i, x))
6 if a not in li:
7 if i != x:
8 li = li + [a]
9 count = count + 1
10 print(count)
11 print(li)
17、有1、2、3、4、5、6、7、8、8个数字,能组成多少个互不相同且无重复数字的3位数?
1 count = 0 2 for i in range(1, 9): 3 for x in range(1, 9): 4 for y in range(1, 9): 5 if i != x and x != y and i != y: 6 print(i, x, y) 7 count += 1 8 print(count)
执行结果:
View Code
18、利用for循环和range输出9*9乘法表
方法一:
1 for x in range(1,10):
2 for y in range(1,x+1):
3 print("{0} * {1} = {2}".format(x,y,x*y),end = " ") #end = " " 作用就是:不换行
4 print('\n',end = " ")
方法二:
1 for i in range(1,10):
2 for j in range(1,i+1):
3 print("%d*%d=%2d" % (i,j,i*j),end=" ") #%d是数值整型对应的格式通配符
4 print(" ")
执行结果:
1 1*1= 1 2 2*1= 2 2*2= 4 3 3*1= 3 3*2= 6 3*3= 9 4 4*1= 4 4*2= 8 4*3=12 4*4=16 5 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 6 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
19、有一下列表,
nums=[2,7,11,15,1,8,7]
请找到列表中任意两个元素相加能够等于9的元素集合,如:[(0,1),(4,5)]
1 nums = [2, 7, 11, 15, 1, 8, 7] 2 li = [] 3 n1 = [] 4 for i in nums: 5 for x in nums: 6 y = i + x 7 if y == 9: 8 v = [i, x] 9 x =(i,x) 10 if v not in li: 11 v.reverse() 12 if v not in li: 13 n1.append(x) 14 li.append(v) 15 print(n1)
结果:
1 [(2, 7), (1, 8)]
20、用Python开发程序自动计算方案:
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
方法一:
1 for x in range(1, 100): 2 for y in range(1, 100): 3 for z in range(1, 100): 4 if x + y + z == 100 and 5 * x + 3 * y + z / 3 == 100: # 小鸡 1/3 5 print(x, y, z)
执行结果:
1 4 18 78 2 8 11 81 3 12 4 84
方法二:
1 for g in range(1, 100):
2 g1 = g * 5
3 # print(g1)
4 for m in range(1, 100):
5 m1 = m * 3
6 # print(m1)
7 for x in range(1, 100):
8 x1 = x * 1/3
9 # print(x1)
10 if g1 + m1 + x1 == 100:
11 if g + m + x ==100:
12 print(" 100 文钱买 100 只鸡,其中公鸡{0}只,母鸡{1}只,小鸡{2}只".format(g,m,x))
执行结果:
1 100 文钱买 100 只鸡,其中公鸡4只,母鸡18只,小鸡78只 2 100 文钱买 100 只鸡,其中公鸡8只,母鸡11只,小鸡81只 3 100 文钱买 100 只鸡,其中公鸡12只,母鸡4只,小鸡84只

浙公网安备 33010602011771号