《Python语言程序设计》——字典与集合

 1.jmu-Java&Python-统计文字中的单词数量并按出现次数排序

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数

注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。

基本版:
统计时,区分字母大小写,且不删除指定标点符号。

进阶版:

  1. 统计前,需要从文字中删除指定标点符号!.,:*?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
  2. 统计单词时需要忽略单词的大小写。

输入说明

若干行英文,最后以!!!!!为结束。

输出说明

单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。

 

 代码如下:

words=""
while True:
    a=input()
    if a=="!!!!!":
        break
    a=a.lower()
    for i in "!.,:*?":
        a=a.replace(i,' ')
    words=words+" "+a
words=words.split()
s={}
for i in words:
    if i in s:
        s[i]+=1
    else:
        s[i]=1
s=list(s.items())

s.sort(key=lambda x:x[0])
s.sort(key=lambda x:x[1],reverse=True)
print(len(s))
for i in range(10):
    word,count=s[i]
    print("{}={}".format(word,count))

 


2. 字典合并 

输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!

输入格式:

在第一行中输入第一个字典字符串;

在第二行中输入第二个字典字符串。

输出格式:

在一行中输出合并的字典,输出按字典序。

"1" 的 ASCII 码为 49,大于 1,排序时 1 在前,"1" 在后。其它的字符同理。

 

代码如下:

m=dict(eval(input()))
n=dict(eval(input()))
for i in n.keys():
    m[i]=m.get(i,0)+n[i]
h=list(m.items())
h.sort(key=lambda x :ord(x[0]) if type(x[0])==str else x[0])
c=str(dict(h)).replace(' ','').replace("'",'"')
print(c)

 


3. 输出星期名缩写

输入一个1到7的数字,输出对应的星期名的缩写。
1 Mon
2 Tue
3 Wed
4 Thu
5 Fri
6 Sat
7 Sun

输入格式:

输入1到7之间数字

输出格式:

输出对应的星期名的缩写

 代码如下:

m=int(input())
if(m==1):
    print("Mon")
elif(m==2):
    print("Tue")
elif(m==3):
    print("Wed")
elif(m==4):
    print("Thu")
elif(m==5):
    print("Fri")
elif(m==6):
    print("Sat")
elif(m==7):
    print("Sun")

 


4.能被3,5和7整除的数的个数(用集合实现) 

求指定区间内能被3,5和7整除的数的个数

输入格式:

在一行中从键盘输入2个正整数a,b(1<=a<b<=10000000),用空格隔开。

输出格式:

在一行输出大于等于a且小于等于b的能被3,5和7整除的数的个数。

代码如下:

a, b=map(int,input().split())
count=0
for i in range (a,b):
    if(i%5==0 and i%3==0 and i%7==0):
        count=count+1
print("%d"%count)

 


5. jmu-python-重复元素判定

每一个列表中只要有一个元素出现两次,那么该列表即被判定为包含重复元素。
编写函数判定列表中是否包含重复元素,如果包含返回True,否则返回False
然后使用该函数对n行字符串进行处理。最后统计包含重复元素的行数与不包含重复元素的行数。

输入格式:

输入n,代表接下来要输入n行字符串。
然后输入n行字符串,字符串之间的元素以空格相分隔。

输出格式:

True=包含重复元素的行数, False=不包含重复元素的行数
,后面有空格。

 代码如下:

n=eval(input())
a=0
b=0
for i in range (n):
    str=input()
    m=str.split(" ")
    if len(list(set(m)))==len(m):
        b=b+1
    else:
        a=a+1
print("True={}, False={}".format(a,b))

 


 6.集合和列表,按从小到大的顺序组合成一个字典 

有二个长度一样的集合和列表,按从小到大的顺序组合成一个字典。

输入格式:

输入二个长度一样的集合和列表,集合元素全部为整型,列表元素全部为字符串型。

输出格式:

组合后的字典。

代码如下:

m=eval(input())
n=eval(input())
m=list(m)
m.sort()
n.sort()
x={}
for i in range (len(m)):
    x[m[i]]=n[i]
print(x)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值