第七章作业

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))

你可能感兴趣的:(python作业记录,python)