作业6
填空题
- 创建一个空元组:
___________
;创建一个具有一个元素5的元组:__________
。
print(tuple()) #()
print((1,2,3,4,5)) #(1,2,3,4,5)
-
创建一个空字典d:
__________
;向d中添加一个键值对(’a’:3)
___________
;d[‘a’] =
________
;d[‘b’] =__________
;d.get(‘b’,2) =
_____________
;执行d[‘b’] = 5后,d =
____________
。执行d.update({1:3,2:4})后d=
_____________
。
d = dict()
print(d)#{}
d['a']=3
print(d) #{'a': 3}
print(d['a']) #3
#print(d['b']) #KeyError: 'b'
d['b']=5
print(d['b']) #5
d.update({1:3,2:4})
print(d) #{'a': 3, 'b': 5, 1: 3, 2: 4}
-
d = {‘a’:1,’c’:5,’d’:9,’b’:10};则list(d.keys()) =
_____________
;list(d.values()) =
___________
;list(d.items()) =
______________
;
d = {'a':1,'c':5,'d':9,'b':10}
print(list(d.keys())) #['a', 'c', 'd', 'b']
print(list(d.values())) #[1, 5, 9, 10]
print(list(d.items())) #[('a', 1), ('c', 5), ('d', 9), ('b', 10)]
- 执行a,b,c = ‘123’后,a=
_______
; b=__________
; c=_________
a,b,c = '123'
print(a,b,c) #1 2 3
- 执行*a,b,c = 1,2,3,4,5,6后,a=
___________
;b=_________
;c =________
。
*a,b,c = 1,2,3,4,5,6
print(a,b,c) #[1, 2, 3, 4] 5 6
- 执行a,b,c = {“hello”:10,“world”:20,“你好”:‘世界’}后,a=
_______
;b=______
;c=_______
。
a,b,c = {"hello":10,"world":20,"你好":'世界'}
print(a,b,c) #hello world 你好
- x=’abcde’, y=’adcbe’;则执行a= [m==n for m,n in zip(x,y)]后,a=
__________
。
x='abcde'
y='adcbe'
a= [m==n for m,n in zip(x,y)]
print(a) #[True, False, True, False, True]
- 表达式[1]+[2] =
________
;(1,)+(3,)=_____
; (1) + (2) =________
。
print([1]+[2])#[1, 2]
print((1,)+(3,)) #(1, 3)
print((1) + (2)) #3
- a = {‘a’:10,’b’:3,’c’:5},则sum(list(a.values())) =
_______
。
a = {'a':10,'b':3,'c':5}
print(sum(list(a.values()))) #18
- 请定义空列表:
_____
; 空元组:______
; 空集合:______
; 空字典:______
。
list1=[]
tuple1 = tuple()
set1 = {}
dict1 = dict()
print(list1,tuple1,set1,dict1) #[] () {} {}
基础题
1、输入两个字符串,打印两个字符串中公共的字符,如果没有公共字符打印公共字符不存在。
例如:字符串1为 abc123 , 字符串2为 huak3 , 打印 a3
Str1 = input('Str1: ')
Str2 = input('Str2: ')
Str3 =''
for i in Str1:
for j in Str2:
if j == i:
Str3 = Str3+i
print(Str3)
2、声明一个字典保存一个学⽣的信息,学⽣生信息中包括: 姓名、年年龄、成绩(单科)、电话、性别(男、
⼥、不明)
d = dict(name='Bob', age=20, score=88,tel = 13277170241,sex='女')
3、声明一个列列表,在列表中保存6个学生的信息(上个题中的字典)
d1 = dict(name='A', age=20, score=89,tel = 13271270248,sex='女')
d2 = dict(name='B', age=19, score=88,tel = 13277130241,sex='男')
d3 = dict(name='C', age=16, score=68,tel = 13277174241,sex='女')
d4 = dict(name='D', age=21, score=88,tel = 13277175641,sex='男')
d5 = dict(name='E', age=20, score=58,tel = 13277170781,sex='不明')
d6 = dict(name='F', age=22, score=48,tel = 13277178881,sex='女')
l = [d1,d2,d3,d4,d5,d6]
(1) 统计不及格学生的个数
res = 0
for i in range(0,6):
if l[i]['score'] < 60:
res+=1
print('不及格人数为%d'% res)
#不及格人数为2
(2) 打印不及格学生的名字和对应的成绩
for i in range(0,6):
if l[i]['score'] < 60:
print('%s不及格分数为%d' % (l[i]['name'],l[i]['score']))
#E不及格分数为58
#F不及格分数为48
(3) 统计未成年学生的个数
res = 0
for i in range(0,6):
if l[i]['age'] < 18:
res+=1
print('未成年学生人数为%d'% res)
#未成年学生人数为1
(4) 打印手机尾号是8的学生的名字
for i in range(0,6):
n = l[i]['tel']
if n % 10 == 8:
print('手机尾号是8的学生的名字%s' % l[i]['name'])
#手机尾号是8的学生的名字A
(5) 打印最高分和对应的学生的名字
d=[]
for i in range(0,6):
d.append(l[i]['score'])
m = max(d)
for i in range(0,6):
if l[i]['score'] == m:
print('%s分数最高为%d' % (l[i]['name'],l[i]['score']))
#A分数最高为89
(6) 删除性别不明的所有学生[**思路:**使用一个新列表 保存性别不是’不明’的学生信息]
l1 = []
for i in range(0,6):
if l[i]['sex'] != '不明':
l1.append(l[i])
print(l1)
#[{'name': 'A', 'age': 20, 'score': 89, 'tel': 13271270248, 'sex': '女'},
# {'name': 'B', 'age': 19, 'score': 88, 'tel': 13277130241, 'sex': '男'},
# {'name': 'C', 'age': 16, 'score': 68, 'tel': 13277174241, 'sex': '女'},
# {'name': 'D', 'age': 21, 'score': 88, 'tel': 13277175641, 'sex': '男'},
# {'name': 'F', 'age': 22, 'score': 48, 'tel': 13277178881, 'sex': '女'}]
(7) 将列表按学生成绩从大到小排序(选做)
l1 = []
for i in range(0,6):
l1.append(l[i]['score'])
sorted_nums = sorted(enumerate(l1), key=lambda x: x[1])
idx = [i[0] for i in sorted_nums] #返回排序后下标
print(idx)
l2 = []
for i in idx:
l2.append(l[i])
print(l2)
#[{'name': 'F', 'age': 22, 'score': 48, 'tel': 13277178881, 'sex': '女'}, {'name': 'E', 'age': 20, 'score': 58, 'tel': 13277170781, 'sex': '不明'}, {'name': 'C', 'age': 16, 'score': 68, 'tel': 13277174241, 'sex': '女'}, {'name': 'B', 'age': 19, 'score': 88, 'tel': 13277130241, 'sex': '男'}, {'name': 'D', 'age': 21, 'score': 88, 'tel': 13277175641, 'sex': '男'}, {'name': 'A', 'age': 20, 'score': 89, 'tel': 13271270248, 'sex': '女'}]
进阶题
现有商品列表如下:
products = [[1,‘Iphone8’, 6666,3], [2,‘MacPro’, 8888,5], [3,'小米 ', 9999,10], [4,‘Coffee’, 9999,6], [5,‘Book’, 9888,5]]
a.请编程打印出这样的格式:
--------商品列表--------
编号 商品名称 价格 数量
1. Iphone8 6666 3
2. MacPro 8888 5
3. 小米 9999 10
4. Coffee 9999 6
5. Book 9888 5
b.用户可以输入编号,或商品名称,选中商品,然后添加到购物车,可以选择多种商品。最后列出用户所选商品列表和总的费用
# 输出:
————购物车—————
1. 小米 9999
2. Book 9888
共:19887元
products = [[1,'Iphone8',6666,3], [2,'MacPro',8888,5], [3,'小米',9999,10], [4,'Coffee',9999,6], [5,'Book',9888,5]]
dict_products = {}
for i in products:
dict_products[i[0]] = [i[1],i[2],i[3]]
# print(dict_products)
print('''\t----------商品列表----------
{0:<5}\t{1:<6}\t{2:<6}\t{3:>4}'''.format('编号','商品名称','价格','数量'))
for i in dict_products:
print('{0:<5}\t{1:<10}\t{2:<6}\t{3:>4}'.format(i,
dict_products[i][0],
dict_products[i][1],
dict_products[i][2]))
print('---------------------------------------')
# 最好不要用eval函数,当只有一个元素时,(1)这样表示int类型
num = list(map(str,input('输入要购买的商品序号(空格隔开):').split()))
money = 0
list_num = []
list_name = []
for i in dict_products:
list_num.append(str(i))
list_name.append(dict_products[i][0])
# print(num)
# print(list_num,list_name)
print('------购物车------')
for i in range(len(num)):
if num[i] in list_num:
print('{}\t{:<10}\t{:<6}'.format(i+1,
dict_products[int(num[i])][0],
dict_products[int(num[i])][1]))
money += dict_products[int(num[i])][1]
elif num[i] in list_name:
index = []
for j in range(len(products)):
if num[i] in products[j]:
index.append(j)
index.append(products[j].index(num[i]))
print('{}\t{:<10}\t{:<6}'.format(i+1,
num[i],
products[index[0]][index[1]+1]))
else:
print('您所购买的物品,有的不存在')
print('总计:{}元'.format(money))
在这里插入代码片
c. 用户可以购买购物车中的商品,购买的时候要在商品列表中修改商品的数量,如果数量为0,则删除该商品;然后清空购物车,输出“你的订单正在处理中,请耐心等待”
def search_num(name):
if dict_products[name][2] == 0:
return True
else:
return False
num1 = list(map(int,input('输入要购买的商品序号(空格隔开):').split()))
for i in range(len(num1)):
if num1[i] in dict_products:
if not search_num(num1[i]):
dict_products[num1[i]][2] -= 1
if search_num((num1[i])):
dict_products.pop(num1[i])
else:
print('您购买的有些商品以售空')
# dict_products.clear()
print('你的订单正在处理中,请耐心等待')
print()
print('''\t----------商品列表----------
{0:<5}\t{1:<6}\t{2:<6}\t{3:>4}'''.format('编号','商品名称','价格','数量'))
for i in dict_products:
print('{0:<5}\t{1:<10}\t{2:<6}\t{3:>4}'.format(i,
dict_products[i][0],
dict_products[i][1],
dict_products[i][2]))