如果输入的代码是:
hey Hi Mark hi mark
程序希望小写数字计数并且单词列表如果是大写则保持大写。所以正确的输出是:
hey 1
Hi 2
Mark 2
hi 2
mark 2
我使用此代码创建了正确的数字计数和列表:
line = input()
norm = line.split()
low = line.lower().split()
for chr in low:
freq = low.count(chr)
print(freq)
for x in norm:
print(x)
其输出是:
1
2
2
2
2
hey
Hi
Mark
hi
mark
我以为我可以在最后一个 for 循环中使用 print(x,freq) 来给出正确的输出,但它出于某种不正当的原因创建了一个额外的嘿,这成为了输出:
hey 2
Hi 2
Mark 2
hi 2
mark 2
我不知道它在哪里得到了额外的关注。 无论如何,有没有办法组合 2 个 for 循环的打印结果来创建正确的输出?或者你知道额外的“嘿”是从哪里来的吗?
您可以使用
zip
一次迭代原始版本和较低版本
for word, word_lower in zip(norm, low):
print(word, low.count(word_lower))
wordInput = input()
myList = wordInput.split(" ")
for i in myList:
print(i,myList.count(i))
这是一个非常简单的方法,使用您迄今为止所学到的知识:
words = input().split()
for word in words:
print(word, words.count(word))
简而言之,单词在 for 循环中被分割,因此您可以从 input() 迭代每个元素。从那里,您可以使用一个输出语句,该语句利用 Python 中的 count() 功能来获得满分。
我知道这是一篇旧帖子,但我觉得我在其他地方找不到正确的解决方案,所以这是我的有效版本。
str_words = input()
list_words = str_words.split()
list_lower_words = [i.lower() for i in list_words]
for i in range(len(list_lower_words)):
word = list_words[i]
word_lower = list_lower_words[i]
count = list_lower_words.count(word_lower)
print(f"{word} {count}")
这可能不是最佳解决方案,但我在这里使用了两个列表而不是字典,因为我知道他们想要的输出重用相同的变量名,这不适用于字典或使用 count()。