【Python】第8次作业:基本统计值计算,数据去重 Data De-duplication,利用字典统计字符个数

本文详细介绍使用Python进行数据的基本统计计算,包括个数、总和、平均值、方差和中位数,并演示如何利用集合进行数据去重,以及通过字典统计字符串中字符的出现次数。

【Python】第8次作业:基本统计值计算,数据去重 Data De-duplication,利用字典统计字符个数

1、基本统计值计算

题目:要求从键盘输入若干个数字,利用函数是实现求个数、总和、平均值、方差和中位值的计算。

from math import sqrt
print("请输入数字(Enter确认/两次Enter退出),且至少需要输入两个数字。")

# 从键盘获取数字
def getNum():
    nums = []
    iNumStr = input()
    while iNumStr != "":
        nums.append(eval(iNumStr))
        iNumStr = input()
    return nums

# 求输入数据的个数
def count(numbers):
    l = len(numbers)
    return l
#求和
def summation(numbers):
    s = 0.0
    for num in numbers:
        s = s + num
    return s

# 计算平均值
def mean(numbers):
    s = 0
    for num in numbers:
        s = s + num
    return s/len(numbers)

# 计算方差
def dev(numbers, mean):
    sdev = 0.0
    for num in numbers:
        sdev = sdev + (num-mean)**2
    return sqrt(sdev/(len(numbers)-1))

# 计算中位数
def median(numbers):
    sorted(numbers)
    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)
z = summation(n)
print("个数:{}, 和:{}, 平均值:{}, 方差:{:.2}, 中位数:{}.".format(count(n),z,m,dev(n,m),median(n)))

2、 数据去重 Data De-duplication

题目:要求利用集合数据类型没有重复的特性,实现对两个列表的数据去重。考虑生成两个列表list1和list2,其中list1为1到20的整数,list2为-20到20的偶数。

list1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
list2=[-20,-18,-16,-14,-12,-10,-8,-6,-4,-2,0,2,4,6,8,10,12,14,16,18]
a=list1+list2
list3=list(set(a))
print(list3)

3、利用字典统计字符个数

题目:

1)编写程序,用户输入一个字符串,以回车结束,利用字典统计其中字母和数字出现的次数(回车符代表结束)。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

2)输入格式是一个以回车结束的字符串,例如输入abc1ab,输出{‘a’: 2, ‘b’: 2, ‘c’: 1, ‘1’: 1}。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

3)输入代码并提交解答。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬注意:提交代码时请删除input()函数中的参数,否则会出现错误。

#统计字符个数
str=str(input())
resoult={}
for i in str:
    resoult[i]=str.count(i)
print(resoult)
Description 商业单位需要容易记忆的电话号码,有一些方法可以让电话号码变得更容易记忆。譬如,可以把电话号码写成单词或短语,如 MON-GLOP 可以代表滑铁卢大学的电话。有时仅仅是把号码的一部分写成单词,如打 310-GINO 便可向 GINO 比萨饼店定购比萨。另一种让电话号码容易记忆的方法是将数字用一种容易记的方式组合起来,譬如 3-10-10-10 也可以代表 GINO 比萨饼店。 电话号码的标准形式是七位十进制数字,在它的第三位第四位之间用连字符连接(例如:666-1200)。电话的键盘提供了字符与数字之间的映射关系,如下所示: Q Z 没有映射到键盘,而连字符不需要被拨打并且可以根据需要任意添加删除。MON-GLOP 的标准形式是 666-4567,310-GINO 的标准形式是310-4466,3-10-10-10的标准形式也是 310-1010。 如果两个电话号码有相同的标准形式,那么这两个电话号码是相同的。 你所在的公司正在编辑一本当地商业单位的电话簿,作为质量控制流程的一部分,你需要确认在该电话簿中有没有错误的电话号码,以及有没有两个(或两个以上的)商业单位使用相同的电话号码。由于当地只使用了 3 6 两个区段,因此电话号码的第一个数字应当永远是 3 或者 6,如果出现了其它数字,就表示这个电话号码错了。此外,如果电话号码中出现了 Q Z,也说明这个电话错了。 Input 一输入为一个样例。每个号码一行,每行的字符不会超过 ​ 个。每输入的数据可能会非常大,譬如超过 ​ 个电话号码。 你可以假设输入中可能会出现复的电话号码不超过 ​ 个,每个号码复的数不超过 ​ 。 Output 输出包括两个部分,第一个部分是错误的电话号码,对于这些号码应当按照输入的顺序以原始的形式输出。在输出错误电话号码前输出Error:,随后输出这些号码,如果没有错误的电话号码,则输出Not found. 第二部分是复的正确的电话号码,对每一个在电话簿中以任何形式出现一以上的电话号码,生成一行输出。这一行应以标准形式给出电话号码,其后跟随一个空格,空格后跟随电话号码在电话簿中出现的数。所有复的电话号码输出行应以号码的升序排列(小号码在前)。在输出复电话号码前输出Duplication,随后按照上述格式输出号码,如果在输入中没有复的电话号码,则输出:Not found. Note 你所编写的程序以后可能会在一种特殊的嵌入式设备上运行,为了降低成本,这种设备使用的 CPU 不是很快、可用的 RAM 为 288K(跟 GBA 一样)且它没有磁盘设备因此不能使用文件作为数据的临时存储。 Hint 请参考《编程珠玑》第一部分,若程序不能在规定的内存中运行,则不得分。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 4873279↵ ITS-EASY↵ 666-4567↵ 3-10-10-10↵ 666-GLOP↵ MON-GLOP↵ 367-11-11↵ 310-GINO↵ F101010↵ 666-1200↵ -4-8-7-3-2-7-9↵ 487-3279↵ 以文本方式显示 Error:↵ 4873279↵ ITS-EASY↵ -4-8-7-3-2-7-9↵ 487-3279↵ ↵ Duplication:↵ 310-1010 2↵ 666-4567 3↵ 1秒 512KB 0 测试用例 2 以文本方式显示 3456789↵ 以文本方式显示 Error:↵ Not found.↵ ↵ Duplication:↵ Not found.↵
最新发布
09-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值