第七章作业

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))
  • 23
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 国科大模式识别是国家科学技术部资助设立的一个高水平研究机构,致力于模式识别的教学与研究。 第一章作业是该课程的第一次作业,主要目的是让学生对模式识别的基础概念有一个初步的了解。 第一章作业通常包括以下内容:首先是对模式识别的定义和目标的了解。模式识别是通过分析和处理大量数据来识别出数据中的模式和规律,以便进行分类、识别、预测等操作。其目标是提高计算机或系统对实际问题的认知和理解能力。 其次,作业可能包括对常用的模式识别技术和方法的介绍。例如,统计模式识别方法将数据分析与统计学方法相结合,利用统计模型来进行模式分类和预测。机器学习方法则是通过让计算机自动学习和优化模型参数,从而实现模式识别的功能。 另外,作业还可能要求学生从实际问题出发,分析和解决一个具体的模式识别问题。学生可能需要选择一个有足够数据和相关信息的问题,并使用已学习的模式识别技术进行数据分析和处理,最终得出相应的结论或预测。 完成第一章作业需要学生具备一定的数学、统计和编程基础。学生需要了解和掌握模式识别的基本概念和方法,并能够运用相关工具和软件进行数据处理和分析。 总之,国科大模式识别第一章作业是帮助学生理解和掌握模式识别基本概念和方法的重要环节,通过实践和应用来提高学生的模式识别能力。 ### 回答2: 国科大模式识别第七章作业主要涵盖了模式识别中的贝叶斯决策论、混淆矩阵以及特征选择三个方面的内容。 第一部分是关于贝叶斯决策论的讲解。贝叶斯决策论是一种基于概率统计原理的模式分类方法。在这部分中,我们学习了条件概率和贝叶斯定理的概念,并了解了如何通过最大后验概率准则进行模式分类。 第二部分是关于混淆矩阵的介绍。混淆矩阵是用来衡量分类算法性能的一种常用工具。我们学习了混淆矩阵的定义,以及如何根据混淆矩阵计算分类的准确率、精确率、召回率和F1值等指标。通过了解混淆矩阵的应用,我们可以更好地评估模式识别算法的性能和效果。 第三部分是关于特征选择的内容。特征选择是模式识别中的一个重要环节,它的目的是从原始数据中选择出最能代表模式的特征。我们学习了特征选择的原理和常用方法,例如过滤式和包裹式特征选择方法,并了解了特征选择的准则和评价指标。 通过学习模式识别第七章作业,我对贝叶斯决策论的应用、混淆矩阵的使用和特征选择的方法都有了更深入的了解。这些知识对于我进一步理解和应用模式识别算法具有重要的指导作用,并有助于我在实践中能够更好地处理分类问题。在以后的学习和工作中,我将继续深入研究这些内容,不断提升自己的模式识别能力。 ### 回答3: 国科大模式识别课程第七章作业内容主要包括两个方面,第一个是基于贝叶斯分类器的手写数字识别,第二个是基于支持向量机(SVM)的情感分类。 在第一个任务中,我们需要利用贝叶斯分类器对手写数字进行识别。首先,我们需要从MNIST数据集中获取一部分手写数字的图像和对应的标签,然后将图像数据进行预处理,如将其转换为灰度图像并进行归一化处理。接下来,我们需要训练贝叶斯分类器,即根据训练数据学习每个数字的概率分布。通过计算每个数字的像素点在各个类别中出现的概率,我们可以根据贝叶斯公式确定每个数字属于各个类别的概率。最后,我们可以通过比较每个数字属于各个类别的概率,来确定手写数字的识别结果。 在第二个任务中,我们需要使用支持向量机对文本进行情感分类。首先,我们需要从IMDB数据集中获取一些带有情感标签的电影评论文本数据。然后,我们需要对文本数据进行预处理,去除停用词、标点符号等,并将每个单词转换为向量表示。接下来,我们可以使用SVM算法来训练情感分类器,即利用支持向量机技术将文本数据划分为积极和消极两个类别。通过调整SVM的超参数和选择适当的核函数,我们可以得到较好的情感分类结果。最后,我们可以使用已训练好的分类器对新的电影评论进行情感分类,判断其是积极还是消极的评价。 总的来说,国科大模式识别课程的第七章作业涵盖了贝叶斯分类器和支持向量机在手写数字识别和情感分类中的应用。通过完成这些作业,我们可以加深对这两个算法的理解,并掌握它们在实际问题中的应用技巧。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值