DAY9:程序分析 组合数据类型

题目来自mooc北理嵩天老师,笔记以便复习
1、基本统计值计算
定义了一个函数,函数名为getNum,无接收参数,随后为函数功能代码
def getNum(): #获取用户不定长度的输入
s=input(" ")
ls=list(eval(s)) #转换成列表
return ls
定义了一个函数,函数名为mean,参数为numbers
def mean(numbers): #计算平均值
s=0.0
for num in numbers:
s=s+num
return s/len(numbers)
定义了一个函数,函数名为dev,参数为numbers,mean
def dev(numbers, mean): #计算标准差
sdev = 0.0
for num in numbers:
sdev = sdev + (num - mean)**2
return pow(sdev / (len(numbers)-1), 0.5)
def median(numbers): #计算中位数
numbers.sort()
size=len(numbers)
if size%2==0:
med=(numbers[size//2-1]+numbers[size//2])/2
else:
med=numbers[size//2]
return med

n = getNum() #函数调用
m = mean(n) #函数调用
print(“平均值:{:.2f},标准差:{:.2f},中位数:{}”.format(m,dev(n,m),median(n)))

2、请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的10个单词,注意:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬(1)单词不区分大小写,即单词的大小写或组合形式一样;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬(2 请在文本中剔除如下特殊符号:!"#KaTeX parse error: Expected 'EOF', got '#' at position 356: … for ch in '!"#̲%&()*+,-./:;<=>?@[\]^_‘{|}~’:
txt=txt.replace(ch," ")
return txt
hamlettxt=getText() #调用函数
words=hamlettxt.split() #返回一个列表
counts={ } #定义空字典
for word in words:
counts[word]=counts.get(word,0)+1
items=list(counts.items()) #返回所有键值对信息,转换为列表
items.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
word,count=items[i]
print(word)
字典排序 sorted(d.items(),key=lambda item:item[1],reverse=True)
3、编程模板中给出了一个字符串,其中包含了含有重复的人名,请去重后给出独特性人名的统计。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬输出模板中字符串共有多少个独特人名。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
ls=s.split() 返回一个列表,由str根据sep被分割的部分组成
ss=set(ls) 转换成集合,主要目的是去重
print(len(ss))
4、读入一个字典类型的字符串,反转其中键值对输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬即,读入字典key:value模式,输出value:key模式。
s = input()
try:
d = eval(s)
e = {}
for k in d:
e[d[k]] = k
print(e)
except:
print(“输入错误”)
5、附件是《沉默的羔羊》中文版内容,请读入内容,分词后输出长度大于2且最多的单词。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬如果存在多个单词出现频率一致,请输出按照Unicode排序后最大的单词。
import jieba # jieba库,中文分词第三方库
f = open(“沉默的羔羊.txt”)
ls = jieba.lcut(f.read()) #精确模式,返回一个列表类型的分词结果
#ls = f.read().split()
d = {}
for w in ls:
d[w] = d.get(w, 0) + 1
maxc = 0
maxw = “”
for k in d:
if d[k] > maxc and len(k) > 2:
maxc = d[k]
maxw = k
if d[k] == maxc and len(k) > 2 and k > maxw:
maxw = k
print(maxw)
f.close()
6、获得用户输入的一个整数N,输出N中所出现不同数字的和。
s=input()
ss=set(s)
sum=0
for i in ss:
sum=sum+int(i)
print(sum)
7、编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名
s=‘一长串人名’
dict_name={}
names=s.split()
for name in names:
dict_name[name]=dict_name.get(name,0)+1 #对所有名字进行一个计数
items=list(dict_name.items()) #返回所有键值对信息后转换成列表
items.sort(key=lambda x:x[1],reverse=True) #排序
print(items[0][0])
8、 counts[word] = counts.get(word,0)+1 是对进行计数word出现的频率进行统计,当word不在words时,返回值是0,当word在words中时,返回+1,以此进行累计计数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值