2022-04-04 两个题目

题目一

获得用户输入的一个整数N,输出N中所出现不同数字的和。

例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为6。

代码

a=set(input())
print(a)
b=str(a)
j=len(b)
s=0
print(b)
for i in range(2,j,5):
    s+=eval(b[i])
print(s)

输入

1222333344111

输出结果

{'4', '3', '2', '1'}
{'4', '3', '2', '1'}
10

讨论

好像我的集合、列表{" ", " "}逗号和双引号之间都存在一个空格,以至于后面步长为5。
而且str(set)是真的把set全搞成字符了,即{'4', '3', '2', '1'}这个集合变成了"{'4', '3', '2', '1'}"这个字符串。

题目二

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

代码

import jieba
s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
       杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
       金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
       鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
       阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
       乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
       忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
       李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
       逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
       洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
       黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
       张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
       洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
       完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
       郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
       谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
       双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
       逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
c=jieba.lcut(s)
counts = {}
for word in c:
    if len(word) == 1:
        continue
    else:
        rword = word
    counts[rword] = counts.get(rword,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True) 
word, count = items[0]
print ("{0:<10}".format(word))

想不用jieba库,然而???

奇怪的问题

s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
       杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
       金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
       鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
       阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
       乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
       忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
       李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
       逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
       洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
       黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
       张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
       洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
       完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
       郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
       谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
       双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
       逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
c=s.split(" ")
counts = {}
for word in c:
    if len(word) == 1:
        continue
    else:
        rword = word
    counts[rword] = counts.get(rword,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True) 
word, count = items[0]
print ("{0:<10}".format(word))

我想把s里面按照 空格" " 进行划分。运行结果为:

>>> 

啥也没有,但我试了,把c打印出来确实是个列表

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

破案了,空字符""产生了许多,也在这个列表里,怪不得结果是个空呢。
增加一句elif就完了

最终

s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 
       杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 
       金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 
       鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 
       阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 
       乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 
       忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 
       李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 
       逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 
       洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 
       黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 
       张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 
       洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 
       完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 
       郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 
       谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 
       双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 
       逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''
c=s.split(" ")
print(c)
counts = {}
for word in c:
    if len(word) == 1:
        continue
    elif len(word)==0:
        continue
    else:
        rword = word
    counts[rword] = counts.get(rword,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True) 
word, count = items[0]
print ("{0:<10}".format(word))

两个小题

1

2
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容