python输入一段英文,计算每个单词或数字出现的次数,并以字典方式输出。

菜农作业:Python_GitHub_L3_Question22

仅供记录自己在做题时候的一些思考。本题目可以不用字典来完成,只是为了练习字典的使用。

题目:

Question 22
Level 3

Question:
Write a program to compute the frequency of the words from the input. The output should output after sorting the key alphanumerically.
Suppose the following input is supplied to the program:
New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
Then, the output should be:
2:2
3.:1
3?:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1
"""

输入一段英文,计算每个单词或数字出现的次数。(这次有标点,但并没有加以区分,而是单独计数)

思路:

输入的字符串中会有多个重复的字符串,想要计数可以使用count函数。

这个题目更适合使用字典来解决,毕竟字典里的key不会重复,如果输入的内容重复了,就直接覆盖。

先将输入的字符串按照空格进行切分,该函数在前面的Q8中有类似的(Q8是按照逗号进行切分,将条件稍微更改即可)

切分代码如下:

def slipkg(string):
    # 将一整串字符串按空格间隔拆分,
    strlist = []
    str2 = ""
    for str1 in string:
        if str1 != " ":
            str2 += str1
        else:
            strlist.append(str2)
            str2 = ""
    strlist.append(str2)

    return strlist

该段函数在GitHub第21题中使用,于是在22题中我直接引用了。

先建立一个空的字典。(这里可以仔细了解字典的具体用法,包括添加删除key和value,如何在空字典中添加key和value等,本题目主要用到了在空字典中添加key和value)

dict有很多内置函数,引用时与类中对象引用方法一致:dict.函数名(也许字典也就是某一类中的实例化对象呢?道行尚浅,不敢乱言)

遍历切分后得到的字符串,(相当于字典里的key),直接在循环里作为key产生,其对应的value就是列表中该字符串出现的次数。

代码如下:

# 计算输入字符串的重复次数,并输出
from Question21 import slipkg
dict = {}

str = input("输入一段英文,输出重复字符串数量:")
list = slipkg(str)
for item in list:
    dict[item] = list.count(item)
print(dict)

这里输出的内容和题目中的不太一样,这里直接是一行,那我想输出竖着的怎么办呢?

好说,再来一个循环,将print放在循环里。

于是这样写:

for key, value in dict:
    print(key, ":", value)

然后发现:

报错了。

为什么报错?value确实在字典里的呀?

或许把代码改成这样执行一下:

for key in dict:
    print(key)

这样不会报错,并输出了key。

其实value是储存在key内部的,不同的key对应了不同的value。那么,问题:我可以依次用for循环输出key中对应的value吗?

我认为可以的:

for key in dict:
    print(key, dict[key])

查看资料发现字典里有个函数叫item?

for key, value in dict.items():
    print(key, ":", value)

这样我就可以把value也放在for循环语句中,总感觉没有第一个print简单粗暴易懂。

字典中的其他函数目前还没用做题遇到过,遇到了再用,用几遍之后才能记得更清楚,搜一搜大佬的资料,扒一扒文章的精化固然重要,但自己思考的过程、对每一个步骤出现bug而提出问题、解决问题的过程,更加重要。

菜农加油!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年5月5日
下一篇 2023年5月5日

相关推荐