我目前正在编写使用python的编程课程。我们被允许有外界帮助,所以我发布这个很好。
所以这是我想写的程序:
使用Python字典编写执行以下操作的程序:
- 要求用户输入一段文字。
- 显示文本中每个字母出现的频率。
- 您的程序应该不区分大小写,即
'a'
和'A'
应该算作同一个字母。- 显示字母表中的所有字母,包括频率为0的字母。
醇>
这是我到目前为止所得到的:
def histogram(L):
d = {}
for x in L:
if x in d:
d[x] += 1
else: d[x] = 1
return d
print histogram("banana")
现在我的问题是它只显示单词中的字母并且区分大小写。我真的需要帮助不区分大小写的部分。我用谷歌搜索了几个小时,无法找到适合我问题的解决方案。
所以,如果您有任何建议,或者您可以向我展示一个例子,我非常感激。
答案 0 :(得分:2)
您需要使用零来初始化所有小写字母的字典。只有这样你才能开始使用你在段落中找到的字符(小写)来更新它。
import string
def histogram(paragraph):
histogram = {}
for char in string.lowercase:
histogram[char] = 0
for char in paragraph:
if char.lower() in string.lowercase:
histogram[char.lower()] += 1
return histogram
这是一个测试。检查一下&#39; t&#39;被计算4次,包括第一次&#39; <&#39;
In [6]: paragraph = """
...: This is a paragraph. It goes over some lines. And
...: there are newlines in between!
...: """
In [15]: histogram(paragraph)
Out[15]:
{'a': 6,
'b': 1,
'c': 0,
'd': 1,
'e': 12,
# ...
't': 4,
# ...
'y': 0,
'z': 0}
答案 1 :(得分:1)
一些提示:
(1)@jonrsharpe强调了"StrInG".lower() == "string"
(2)string.ascii_letters
包含字符串中的所有小写和大写字母
(3)set(iterable)
返回存储在集合中的iterable的唯一元素;此外,字符串是可迭代的
(4)dict().fromkeys(iterable, 0)
创建一个字典,其中iterable
中的每个项目都存储为值为0的键。
这应该会让你走得很远。
答案 2 :(得分:0)
import string
def histogram(L):
d = {}
for x in string.ascii_lowercase:
d[x] = 0
for x in L:
if x in string.ascii_letters:
x = x.lower()
if x in d:
d[x] += 1
else: d[x] = 1
else:
continue
return d
print histogram("HeLlo WOrld!!")
答案 3 :(得分:0)
def histogram(L):
#do all the letters
d = {z:0 for z in map(lambda x: chr(ord("a") + x), xrange(26))}
for x in L:
x = x.lower()
try:
d[x] += 1
except KeyError:
print("bad char")
return d
print histogram("banana")