python基础·练习4(字典作业)

python基础·练习4

作业6

填空题

  1. 创建一个空元组:___________;创建一个具有一个元素5的元组:__________
print(tuple()) #()
print((1,2,3,4,5)) #(1,2,3,4,5)
  1. 创建一个空字典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}
  1. 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)]

  1. 执行a,b,c = ‘123’后,a=_______; b=__________; c=_________
a,b,c = '123'
print(a,b,c) #1 2 3

  1. 执行*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
  1. 执行a,b,c = {“hello”:10,“world”:20,“你好”:‘世界’}后,a=_______;b=______;c=_______
a,b,c = {"hello":10,"world":20,"你好":'世界'}
print(a,b,c) #hello world 你好
  1. 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. 表达式[1]+[2] = ________;(1,)+(3,)=_____; (1) + (2) = ________
print([1]+[2])#[1, 2]
print((1,)+(3,)) #(1, 3)
print((1) + (2)) #3
  1. a = {‘a’:10,’b’:3,’c’:5},则sum(list(a.values())) = _______
a = {'a':10,'b':3,'c':5}
print(sum(list(a.values()))) #18
  1. 请定义空列表:_____; 空元组:______; 空集合:______; 空字典:______
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]))
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值