# 不定长度输入
def getNum():
nums = []
iNumStr = input('输入数字:')
while iNumStr != '': # 空字符结束
nums.append(eval(iNumStr))
iNumStr = input('输入数字:')
return nums
# 平均值
def mean(n):
smean = 0.0
for i in n:
smean += i
return smean / len(n)
# 计算样本标准差
def dev(n, mean_n):
sdev = 0.0
for i in n:
sdev += pow(i - mean_n, 2)
return pow(sdev / (len(n) - 1), 0.5)
# 计算中位数
def median(n):
n=sorted(n)
size = len(n)
if size % 2 == 0:
return (n[size // 2] + n[size // 2 - 1]) / 2
else:
return n[size // 2]
def main():
n = getNum()
m = mean(n)
print("平均数:{:.2f}\t标准差:{:.2f}\t中位数:{:.2f}".format(m, dev(n, m), median(n)))
try:
main()
except:
print("输入错误")
# 文本词频统计
# 英文
# def getText():
# txt = open('hamlet.txt', 'r').read()
# txt = txt.lower()
# for char in '!@#$%^&*()_+-={}[]|\\;:"\'<,>.?/`~':
# txt = txt.replace(char, ' ')
# 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(type(items[i]))
# print('{:<10}{:>5}'.format(word, count))
# 中文
import jieba
def getText():
txt = open('threekingdoms.txt', 'r', encoding='utf-8').read()
return txt
excludes = {'将军', '却说', '荆州', '二人', '不可', '不能', '如此', '商议',
'如何', '主公', '军士', '左右', '军马', '引兵', '次日', '大喜',
'天下', '东吴', '于是', '今日', '不敢', '魏兵', '陛下', '一人',
'都督', '人马', '不知', '汉中', '只见', '众将', '蜀兵', '上马',
'大叫', '太守', '此人', '夫人', '先生', '后人', '背后', '城中',
'一面', '何不', '大军', '忽报', '百姓', '何故', '然后', '先锋',
'天子', '不如', '赶来', '原来', '令人', '江东', '下马', '喊声',
'正是', '徐州', '忽然', '因此', '成都', '不见', '未知', '大败',
'大事', '之后', '一军', '引军', '起兵', '军中', '接应', '进兵',
'大惊', '可以', '以为', '大怒', '不得', '心中'}
words = jieba.lcut(getText())
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == '孔明' or word == '孔明曰':
rword = '诸葛亮'
elif word == '关公' or word == '云长':
rword = '关羽'
elif word == '丞相' or word == '孟德':
rword = '曹操'
elif word == '玄德' or word == '玄德曰' or word == '先主':
rword = '刘备'
elif word == '后主':
rword = '刘禅'
elif word == '吕奉先' or word == '奉先':
rword = '吕布'
elif word == '张翼德' or word == '翼德':
rword = '张飞'
else:
rword = word
counts[rword] = counts.get(rword, 0) + 1
for word in excludes:
del counts[word]
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(20):
word, count = items[i]
print('{:<8}{:>5}'.format(word, count))