Python课程第六周笔记及作业练习

Python第六周

笔记

  1. 组合数据类型
    三种基本数据类型:
    (1) 集合类型
    (2) 序列类型:元组类型和列表类型
    (3) 字典类型
  2. 集合类型及操作
    (1) 集合类型定义
    集合是多个元素的无序组合
    -集合类型与数学中集合概念一致
    -集合元素之间无序,每个元素唯一,不存在相同元素
    -集合元素不可更改,不能是可变数据类型
    -集合用大括号{}表示,元素间用逗号分隔
    -建立集合类型用{}或set()
    -建立空集合类型,必须使用set()
    重点:
    -集合用大括号{}表示,元素间用逗号分隔
    -集合中每个元素唯一,不存在相同元素
    -集合元素之间无序
  3. 集合之间的操作符
    S|T是并运算:返回一个新集合,包括在集合S和T中所有元素
    S-T是差运算:返回一个新集合,包括在集合S但不在T中的元素
    S&T是交运算:返回一个新集合,包括同时在集合S和T中的元素
    S^T是补运算:返回一个新集合,包括在集合S和T中的非相同元素
    S<=T或S<T:返回True或False,判断S和T的子集关系
    S>=T或S>T:返回True或False,判断S和T的包含关系
    在这里插入图片描述
    集合处理方法
    S.add(x):如果x不在集合S中,将x增加到S
    S.discard(x):移除S中元素x,如果x不在集合S中,不报错
    S.remove(x):移除S中元素x,如果x不在集合S中,产生KeyError异常
    S.clear():移除S中所有元素
    S.pop():随机返回S的一个元素,更新S,若S为空产生KeyError异常
    在这里插入图片描述
  4. 集合类型应用场景
    (1)包含关系的比较
    (2)数据去重:集合类型所有元素无重复
    在这里插入图片描述
  5. 序列类型定义
    序列是具有先后关系的一组元素
    -序列是一维元素向量,元素类型可以不同
    -类似数学元素序列:S_0,S_1…S_(n-1)
    -元素间由序号引导,通过下标访问序列的特定元素
    序列是一个基类类型
    序列类型:①字符串类型②元组类型③列表类型
    字符串类型是序列类型的一种扩展
    在这里插入图片描述
  6. 序列类型通用操作符
    在这里插入图片描述
    5个函数和方法
函数和方法描述
len(s)返回序列s的长度
min(s)返回序列s的最小元素,s中元素需要可比较
max(s)返回序列s的最大元素,s中元素需要可比较
s.index(x)或s.index(x,i,j)返回序列s从i开始到j位置中第一次出现元素x的位置
s.count(x)返回序列s中出现x的总次数
  1. 元组类型及操作
    元组是序列类型的一种扩展
    -元组是一种序列类型,一旦创建就不能被修改
    -使用小括号()或tuple()创建,元素间用逗号,分隔
    -可以使用或不使用小括号
def fuc()
		return 1,2

这里可以看做是有2个返回值,但是在Python内部会认为返回了一个值,这个值是元组类型。
8. 元组类型定义

>>> color=("blue","yellow",creature)
>>> color
('blue', 'yellow', ('cat', 'dog', 'tiger', 'human'))
  1. 元组类型继承序列类型的全部通用操作
    -元组继承了序列类型的全部通用操作
    -元组因为创建后不可修改,因此没有特殊操作
    -使用或不使用小括号
>>> creature="cat","dog","tiger","human"
>>> creature[::-1]
('human', 'tiger', 'dog', 'cat')
>>> color=(0x001100,"blue",creature)
>>> color[-1][2]
'tiger'
  1. 列表类型及操作
    列表是序列类型的一种扩展,十分常用
    -列表是一种序列类型,创建后可以随意被修改
    -使用方括号[]或list()创建,元素间用逗号,分隔
    -列表中各元素类型可以不同,无长度限制
    如果仅仅是赋值,则其只将一段列表重新命名
    在这里插入图片描述
    在这里插入图片描述
  2. 列表类型应用场景
    序列类型应用场景
    -元组用于元素不改变的应用场景,更多用于固定搭配场景
    -列表更加灵活,它是最常用的序列类型
    -最主要作用:数据表示指的是用元组或列表这样的数据类型表示一组有序数据,进而操作他们
    元素遍历
    for item in ls(列表类型):
    <语句块>
    for item in tp(元组类型的一个变量):
    <语句块>
    数据保护
    -如果不希望数据被程序所改变,转换成元组类型
>>> ls=["cat","dog","tiger",1024]
>>> lt=tuple(ls)
>>> lt
('cat', 'dog', 'tiger', 1024)
  1. 基本统计值
    -总个数:len()
    -求和:for…in
    -平均值:求和/总个数
    -方差:各数据与平均数差的平方的和的平均值
    -中位数:排序,元素数目为奇数个则找中间1个,偶数个则找中间2个取平均
#基本统计值计算
def getNum():   #获取用户不定长度的输入
    nums=[]
    iNumStr=input("请输入数字(回车退出):")
    while iNumStr !="":
        nums.append(eval(iNumStr))
        iNumStr=input("请输入数字(回车退出):")
    return nums
#计算平均值
def mean(numbers):  #计算平均值
    s=0.0
    for num in numbers:
        s=s+num
    return s/len(numbers)
#计算标准偏差
def dev(numbers,means): #计算标准偏差
    sdev=0.0
    for num in numbers:
        sdev=sdev + (num - means)**2    #这里修改了一下网课中的代码,否则会报错
    return pow(sdev / (len(numbers)-1),0.5)
#计算中位数
def median(numbers):    #计算中位数
    sorted(numbers)     #sorted()函数排序
    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("平均值:{},方差:{:.2},中位数:{}.".format(m,dev(n,m),median(n)))
  1. 技术能力扩展
    -获取多个数据:从控制台获取多个不确定数据的方法
    -分隔多个函数:模块化设计方法
    -充分利用函数:充分利用Python提供的内容函数
  2. 字典类型及操作
    集合类型、序列类型、字典类型是组合数据类型的三种表达形式
    映射:
    -映射是一种键(索引)和值(数据)的对应
    字典类型的“映射”的体现
    -键值对:键是数据索引的扩展
    -字典是键值对的集合,键值对之间无序
    -采用大括号{}和dict()创建,键值对用冒号:表示
    {<键1>:<值1>,<键2>:<值2>,…,<键n>:<值n>}
    在字典变量中,通过键获得值
    <字典变量>={<键1>:<值1>,<键2>:<值2>,…,<键n>:<值n>}
    <值>=<字典变量>[<键>] <字典变量>[<键>]=<值>
    []用来向字典变量中索引或增加元素
    集合类型也是用大括号表示的,但集合类型中生成一个空的集合类型不能用大括号表示,{}空的大括号是默认生成字典类型的。而生成空的集合类型,要用set函数
  3. 字典类型操作函数和方法
    在这里插入图片描述
    其中k in d中的k不是数据值,而是数据值的索引
    在这里插入图片描述
    字典中的元素没有顺序关系
  4. 字典类型应用场景
    元素遍历
    for k in d:
    <语句块>
  5. jieba库概述
    jieba是优秀的中文分词第三方库
    jieba分词的三种模式:精确模式、全模式、搜索引擎模式
    -精确模式:把文本精确的切分开,不存在冗余单词
    -全模式:把文本中所有可能的词语都搜啊秒出来,有冗余
    -搜索引擎模式:在精确模式基础上,对长词再次切分
    在这里插入图片描述
    在这里插入图片描述
    1. 文本词频统计
      《哈姆雷特》词频统计
	#哈姆雷特
def getText():
    txt=open("hamlet.txt","r").read
    txt=txt.lower() #全员小写
    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)  #默认排序从小到大,reverse=True则从大到小
for i in range(10):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))
    
#三国演义人物出场统计
import jieba
txt=open("threekingdoms.txt","r",encoding="utf-8").read()
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    else:
        counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(15):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))


#三国演义人物出场统计2.0
import jieba
txt=open("threekingdoms.txt","r",encoding="utf-8").read()
excludes={"将军","却说","荆州","二人","不可","不能","如此"}
words=jieba.lcut(txt)
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=="丞相":
        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(10):
    word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))

作业

单项选择题
点击选项选择正确答案,每题有且仅有一个正确答案

1
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬序列s,哪个选项对s.index(x)的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
返回序列s中元素x第一次出现的序号
B
返回序列s中序号为x的元素
C
返回序列s中元素x所有出现位置的序号
D
返回序列s中x的长度
正确答案 A
注意:s.index(x)返回第一次出现x的序号,并不返回全部序号。
2
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬关于Python的元组类型,以下选项错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
元组采用逗号和圆括号(可选)来表示
B
一个元组可以作为另一个元组的元素,可以采用多级索引获取信息
C
元组一旦创建就不能被修改
D
元组中元素必须是相同类型
正确答案 D
序列类型(元组、列表)中元素都可以是不同类型。
3
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬关于大括号{},以下描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
直接使用{}将生成一个元组类型
B
直接使用{}将生成一个字典类型
C
直接使用{}将生成一个集合类型
D
直接使用{}将生成一个列表类型
正确答案 B
集合类型和字典类型最外侧都用{}表示,不同在于,集合类型元素是普通元素,字典类型元素是键值对。
字典在程序设计中非常常用,因此,直接采用{}默认生成一个空字典。
4
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬关于Python组合数据类型,以下描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
序列类型是二维元素向量,元素之间存在先后关系,通过序号访问
B
组合数据类型能够将多个相同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易
C
组合数据类型可以分为3类:序列类型、集合类型和映射类型
D
Python的字符串、元组和列表类型都属于序列类型
正确答案 A
序列类型总体上可以看成一维向量,如果其元素都是序列,则可被当作二维向量。
5
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬给定字典d,哪个选项对d.values()的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
返回一个列表类型,包括字典d中所有值
B
返回一个元组类型,包括字典d中所有值
C
返回一种dict_values类型,包括字典d中所有值
D
返回一个集合类型,包括字典d中所有值
正确答案 C
运行如下代码:(其中d是一个预定义的字典)
d={“a”:1, “b”:2}
type(d.values())
输出结果是:<class ‘dict_values’>
d.values()返回的是dict_values类型,这个类型通常与for…in组合使用。
6
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬S和T是两个集合,哪个选项对S^T的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
S和T的差运算,包括在集合S但不在T中的元素
B
S和T的交运算,包括同时在集合S和T中的元素
C
S和T的补运算,包括集合S和T中的非相同元素
D
S和T的并运算,包括在集合S和T中的所有元素
正确答案 C
集合"交并差补"四种运算分别对应的运算符是:& | - ^
7
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬列表ls,哪个选项对ls.append(x)的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
向ls中增加元素,如果x是一个列表,则可以同时增加多个元素
B
替换列表ls最后一个元素为x
C
只能向列表ls最后增加一个元素x
D
向列表ls最前面增加一个元素x
正确答案 C
ls.append(x),如果x是一个列表,则该列表作为一个元素增加的ls中。
8
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬以下不是Python序列类型的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
字符串类型
B
列表类型
C
元组类型
D
数组类型
正确答案 D
Python内置数据类型中没有数组类型。
9
1 分
哪个选项是下面代码的输出结果?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
d= {‘a’: 1, ‘b’: 2, ‘b’: ‘3’}
print(d[‘b’])
A
1
B
{‘b’:2}
C
2
D
3
正确答案 D
创建字典时,如果相同键对应不同值,字典采用最后(最新)一个"键值对"。
10
1 分
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬给定字典d,哪个选项对x in d的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
A
判断x是否是字典d中的键
B
x是一个二元元组,判断x是否是字典d中的键值对
C
判断x是否是在字典d中以键或值方式存在
D
判断x是否是字典d中的值
正确答案 A
键是值的序号,也是字典中值的索引方式。
因此,x in d 中的x被当作d中的序号进行判断。

编程题:
1.
数字不同数之和
描述
获得用户输入的一个整数N,输出N中所出现不同数字的和。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为6。

#作业第一题
t=input()
s=set(t)
r=0
for i in s:
    r +=eval(i)
print(r)

人名最多数统计
描述
编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名。

#作业第二题
s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
       杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
       金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
       鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
       阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
       乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
       忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
       李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
       逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
       洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
       黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
       张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
       洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
       完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
       郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
       谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
       双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
       逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
words=s.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)  #默认排序从小到大,reverse=True则从大到小
for i in range(1):
    word,count=items[i]
    print("{0}".format(word))

练习

实例9:基本统计值计算
描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
获取以逗号分隔的多个数据输入(输入为一行),计算基本统计值(平均值、标准差、中位数)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
除中位数外,其他输出保留小数点后两位。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
请补充编程模板中代码完成

#练习第一题
def getNum():       #获取用户不定长度的输入
    s=input()
    ls=list(eval(s))
    return ls

def mean(numbers):  #计算平均值
    s=0.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 pow(sdev / (len(numbers)-1), 0.5)

def median(numbers):    #计算中位数
    numbers.sort()     #sorted()函数排序
    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)))

实例10:文本词频统计 – Hamlet
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
文本词频统计::一篇文章,出现了哪些词?哪些词出现的最多?
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
英文文本:hamlet‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬.txt,参考附件‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的10个单词,注意:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
(1) 单词不区分大小写,即单词的大小写或组合形式一样;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
(2) 请在文本中剔除如下特殊符号:!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
(3) 输出10个单词,每个单词一行;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
(4) 输出单词为小写形式。

#练习第二题
def getText():
    txt = open("hamlet.txt", "r").read()
    txt=txt.lower() #全员小写
    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)  #默认排序从小到大,reverse=True则从大到小
for i in range(10):
    print(items[i][0])

人名独特性统计
描述
编程模板中给出了一个字符串,其中包含了含有重复的人名,请去重后给出独特性人名的统计。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
输出模板中字符串共有多少个独特人名。

s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
       杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
       金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
       鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
       阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
       乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
       忽必烈 慕容复 张三丰 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
       李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
       逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
       洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
       黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
       张三丰 令狐冲 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
       洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
       完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
       郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
       谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
       双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
       逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄'''

r=0
ls = s.split()
t=set(ls)
for i in t:
    r +=1
print(r)

字典翻转输出
描述
读入一个字典类型的字符串,反转其中键值对输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
即,读入字典key:value模式,输出value:key模式。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
输入格式
用户输入的字典格式的字符串,如果输入不正确,提示:输入错误。

#练习第四题
d = eval(input())
if type(d) != dict:
    print('输入错误')
else:
    s = {}
    for k in d:
        s[d[k]] = k #双重逻辑
    print(s)

《沉默的羔羊》之最多单词
描述
附件是《沉默的羔羊》中文版内容,请读入内容,分词后输出长度大于2且最多的单词。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
如果存在多个单词出现频率一致,请输出按照Unicode排序后最大的单词。

#练习第五题
import jieba
txt=open("沉默的羔羊.txt","r",encoding="utf-8").read()
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    else:
        counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(1):
    word,count=items[i]
    print("{0}".format(word))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值