Python (嵩天)学习笔记(第六周)

日更写的好快,一下子就到第六周了,本课程一共有七周,明天应该就全部写完了。另外冬季期的课程会在12.18结课,报名了课程的记得及时完成作业。

学习内容

集合类型及操作

集合是多个元素的无序组合,不能存在可变数据类型。

用{}表示,元素用,分隔

建立集合类型用{}或者set()

建立空集合必须用set()

A={"python",123,("python",123)}
print(A)
B=set("456")
print(B)
C={"python",123,("python",123),"python",123,}#如果存在相同元素会发生什么呢?
print(C)

 {123, ('python', 123), 'python'}
{'6', '4', '5'}

{'python', 123, ('python', 123)}

如果强行定义相同元素,则重复的元素不会再输出 。

集合操作符
S|T
S-T
S&T
S<=T或S<T判断S、T子集关系
S>T\S>T判断S、T包含关系
A={"p",1,"y"}
print(A)
B=set("pypypy123")
print(B)
print(A-B)
print((B-A))
print(A&B)
print(A|B)

 

{'y', 1, 'p'}
{'y', '1', 'p', '2', '3'}
{1}
{'3', '1', '2'}
{'y', 'p'}
{'y', 1, '1', 'p', '2', '3'}

应用场景:包含关系比较、数据去重

序列类型及操作

操作符

x in s

x是否为s的元素则True
x not in sx不是s的元素则True
s+t连接s和t
s*n or n*s将s复制n次
s[i]返回s中的第i个元素
s[i:j] or s[i:j:k]返回s中i到j步长的元素子序列

 

通用函数
len(s)返回长度(元素个数)
min(s)返回最小值
max(s)返回最大值
s.index(x) or s.index(x,i,j)返回i到j第一次出现x的位置
s.count(x)返回出现x的次数

 元组类型操作:

creature = "cat","dog","tiger","man"
t=creature[::-1]
print(t)

 ('man', 'tiger', 'dog', 'cat')

 

列表操作函数
ls[i]=xls第i元素为x
ls[i:j:k]=It用lt替换ls切片后所对应元素子列表
del ls[i]

删除ls中第i元素

de; ;s [i:j:k]删除ls中i到j步长为k的元素
is =+lt更新列表ls,将lt增加到ls中
ls *= n更新ls,其元素重复n次

字典类型及操作

函数:

del d[k]

k in d

d.keys()

d.balues()

d.items()

jieba库的使用(pip install jieba)

函数:

jieba.lcut(s)

jieba.lcet(s,cut_all=Ture)

jieba.lcut_for_search(s)

jieba.add_word(w)

Python 123答案

1.

#请在...补充一行或多行代码
#CalStatisticsV1.py
def getNum():       #获取用户不定长度的输入
    s = input()
    ls = list(eval(s))
    return ls

def mean(numbers):  #计算平均值
    sum = 0
    for num in numbers:
        sum = sum + num    
    return sum/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()
    size = len(numbers)
    if size % 2 == 0:
        return (numbers[size//2-1]+numbers[size//2])/2
    else:
        return numbers[size//2]
    
n =  getNum() #主体函数
m =  mean(n)
print("平均值:{:.2f},标准差:{:.2f},中位数:{}".format(m,dev(n,m),median(n)))

2.

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 # 字典get用法,在字典中找到word,则取word作为键对应的value,否则取默认值(此处设置为0)
items = list(counts.items()) # 将字典的键值对转换为列表,以便后面使用排序对方法
items.sort(key = lambda x:x[1],reverse=True) # 按列表中第二个元素(word的个数)进行排序
for word,counts in items[:10]:
    print(word)

3.

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

4.

s = input()
try:
    d = eval(s)
    e = {}
    for k in d:
        e[d[k]] = k
    print(e)
except:
    print("输入错误")

5.

import 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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值