1.题库:数字分类
【问题描述】
有例如如下列表ls= [11,22,33,44,55,66,77,88,99,90],ls里的数据是标准输入(至少有一个数据)
将所有大于 x 的值保存至字典的第一个key中,数据保持原列表的先后顺序不变
将小于等于 x 的值保存至第二个key的值中,数据保持原列表的先后顺序不变。
即: {'k1': 大于x的所有值列表, 'k2': 小于等于x的所有值列表}
转换成列表后输出
题目要求:
完成分类函数classify(x,ls)
【样例输入】
66
11 22 33 44 55 66 77 88 99 90
【样例输出】
[('k1', [77, 88, 99, 90]), ('k2', [11, 22, 33, 44, 55, 66])]
【样例说明】
输入两行:第一行x
第二行多个正整数,空格隔开。
输出分类后的列表,即: [('k1', [大于x的所有值列表]), ('k2', [小于等于x的所有值列表])] ,数据保持原列表的先后顺序不变。
def classify(x,ls):
k1 = []
k2 = []
for i in ls:
if i>x:
k1.append(i)
else:
k2.append(i)
dic['k1'] = k1
dic['k2'] = k2
x = int(input())
ls = input().split()
ls = list(map(int,ls)) # map函数使用说明:int函数作用于ls中每一个元素,返回一个新的整数序列,再用list转换成列表。 也可以用for循环改变列表中元素格式
dic = {}
classify(x,ls)
print(sorted(list(dic.items())))
2.题库:求0~x的阶乘
【问题描述】
给定1个整数x,求0~x的阶乘并存入字典。
题目要求:
完成work函数,实现要求的功能
【样例输入】
3
【样例输出】
{0: 1, 1: 1, 2: 2, 3: 6}
【样例说明】
输入:一个整数x
输出:0~x的阶乘构成的字典。格式为{0: 1, 1: 1, 2: 2, 3: 6,...,x:x!}
代码:
def work(a) :
ans = {0:1}
b = 1
for x in range(1,a+1):
b *= x
ans[x] = b
return ans
a = int(input())
ans = work(a)
print(ans)
3.题库:购物统计
【问题描述】
某人到超市购买了以下物品,现需要对购物的品种数和购物金额进行统计。清单如下:
milk 65
bread 15
Coke 39
Biscuit 45
candy 24
fruit 35.8
None
至少有一条购物记录,商品不重复,每条记录的格式如上所示,以"None"结束,每条数据是商品名和消费额,空格隔开。
题目要求:
补全代码,实现题目功能。
【样例输入】
milk 65
bread 15
Coke 39
Biscuit 45
candy 24
fruit 5.8
None
【样例输出】
6 244.80
【样例说明】
输入为不定行,以"None"结束,每条数据是水果名和消费额,空格隔开。至少有一条购买记录,商品不重复。
输出为一行,分别为商品数量(整数)、购买总金额(浮点数,保留两位小数),空格隔开
代码:
item = input() or "None"
goods = {}
while(item != "None"):
name,cost = item.split()
cost = eval(cost)
goods[name] = cost
item = input() or "None"
goodsNum =len(goods)
money=0
for i in goods:
money += float(goods.get(i))
print(goodsNum,"%.2f"%(money))
4.题库:统计字符串出现的次数
【问题描述】
编写一个程序,从键盘读取未指定个数的字符串,一行一个,以字符串"q"为输入结束标志("q"不列入统计范围)。
使用字典找出其中出现次数最多的字符串,打印该字符串及其出现次数。
注意:本题的测试用例中将保证只有一个字符串出现次数最多,且至少有一条数
【样例输入】
abc
abc
bcd
xxx
q
【样例输出】
abc 2
【样例说明】
输入为不定行,以"q"结束,q是结束标志,不属于需要统计的字符串。
输出为一行,出现次数最多的字符串(只有一个)及其出现次数,由空格隔开。
代码:
b = []
a = input() or 'q'
while a != 'q':
b.append(a)
a = input() or 'q'
c = {}
for x in b:
c[x] = b.count(x)
d = max(c.values())
for k in c:
if c[k]==d:
print(k,d)
5.题库:统计字符串的出现次数
【问题描述】
编写一个程序读取未指定个数的字符串(以空格隔开),找出出现次数最多的字符串及其出现次数。
如果出现次数最多的有多个字符串,按照字符串升序输出所有出现次数最多的字符串。
例如输入abc bcd abc bcd bbb,那么字符串"abc"和"bcd"出现的次数最多,2次,先输出abc 2,再输出bcd 2。
【样例输入】
abc bcd abc bcd bbb
【样例输出】
abc 2
bcd 2
【样例说明】
输入为一行,分别是以空格分隔开的未指定个数的字符串
输出为不定行,按照字符串升序排列的出现次数最多的字符串及其出现次数
代码:
a = list(map(str,input().split()))
b = {}
for x in a:
b[x] = a.count(x)
c = max(b.values())
d = {}
for x in b:
if b[x]==c:
d[x] = c
d = sorted(d.items(),key=lambda e:e[0]) #对字典按照键排序
d = dict(d)
for k,v in d.items():
print(k,v)
6.题库:计算平均成绩
【问题描述】
存储学生Zhang成绩的字典结构如下:
stu={"name":"Zhang","english":80,"python":90,"math":100}
1)请使用上述结构输入学生的name及english、python和math三门课的成绩并存储到字典stu中(不考虑空数据的情况);
2)计算该同学的平均成绩,同时在字典中添加关键字"avg"用来表示平均成绩;
3)由高到低排序该学生的各科成绩;
4)输出该学生的姓名,各科成绩(保留两位小数)和平均成绩(保留两位小数)。
【样例输入】
Zhang 80 90 100
【样例输出】
Zhang 100.00 90.00 80.00 90.00
【样例说明】
输入为一行,分别是以空格分隔开的学生姓名、英语成绩、python成绩、数学成绩
输出为一行,分别是以空格分隔开的学生姓名、从高到低排序的各科成绩、平均成绩
代码:
a = list(map(str,input().split())) #本题未使用题目指定方法
b = a[1:]
for x in range(len(b)):
b[x] = int(b[x])
b.sort(reverse = True)
average = sum(b)/len(b)
print(a[0],end=' ')
for y in range(len(b)):
print(f'{b[y]:.2f}',end=' ')
print(f'{average:.2f}')
7.题库:获取国家的GDP值
【问题描述】
存储国家GDP的字典结构如下:
GDP = {'USA': 95,'China': 80,'Japan': 50}
题目要求:
1、请从标准输入录入多个国家的名字和对应的GDP,存入GDP字典中。(字典不为空)
2、获取所有的key值,存储在列表里
3、获取所有的value值,存储在列表里
4、判断 键'India' 是否在字典中
5、获得字典里所有value 的和
【样例输入】
USA 95
China 80
Japan 50
ok
【样例输出】
['China', 'Japan', 'USA']
[50, 80, 95]
no
225
【样例说明】
输入为多行,分别是以空格分隔开的国家和对应的GDP值,以"ok"结束
输出第一行:所有的key值,存储在列表里,升序排列
输出第二行:所有的value值,存储在列表里,升序排列
输出第三行:判断 键'India' 是否在字典中,是输出'yes',否输出'no'
输出第四行:字典里所有value 的和
代码:
total = input() or 'ok'
contry = []
number = []
while total != 'ok':
a,b = total.split()
contry.append(a)
number.append(int(b))
total = input() or 'ok'
contry.sort()
number.sort()
print(contry)
print(number)
if 'India' in contry:
print('yes')
else:
print('no')
print(sum(number))