计算字母在单词中出现的次数,并按以下格式放置它们:

时间:2018-11-25 17:19:38

标签: python python-3.x error-handling count letter

我必须创建一个程序,该程序给出一个短语来计算每个单词中字母出现的次数并以此方式打印它:

输入:

i see it

输出:

[('i', 1), ('s', 1), ('e', 2), ('i', 1), ('t', 1)]

我的代码仅适用于第一个单词。您能帮我吗?

inicialString=str(input())

words=inicialString.split(" ")
def countTheLetters(t):
 for word in words: 
  thingsList=[]
  for x in word:
   n=word.count(x)
   j=x,n
   thingsList.append(j)
  return thingsList

print(countTheLetters(words))

我的输出:

[('i', 1)]

我试图替换返回的ThingsList,但是它仅适用于最后一个单词。

4 个答案:

答案 0 :(得分:1)

您每次都要通过thingsList循环来清空for word in words:,因此您只会得到最后一个单词。

在第一个thingsList = []语句之前放置for

答案 1 :(得分:0)

问题是您在检查第一个单词后立即从函数中返回,而是应该将当前单词的结果附加到某个最终列表中,并在处理完所有单词后返回它。

inicialString='i see it'
words=inicialString.split(" ")

def countTheLetters(t):
    ret = []
    for word in words: 
        thingsList=[]
        for x in word:
            n=word.count(x)
            j=x,n
            if not j in thingsList:
                thingsList.append(j)
        ret.extend(thingsList)
    return ret

print(countTheLetters(words))

输出:

[('i', 1), ('s', 1), ('e', 2), ('i', 1), ('t', 1)]

答案 2 :(得分:0)

问题是您要在“ for word in word”循环中的每个迭代中重置“ thingsList”,并且也只需1次迭代就返回ThingsList列表。

inicialString=str(input())

words=inicialString.split(" ")
def countTheLetters(t):
  thingsList=[]
 for word in words: 
  for x in word:
   n=word.count(x)
   j=x,n
   thingsList.append(j)
return thingsList

print(countTheLetters(words))

答案 3 :(得分:0)

更新了代码,请立即检查

inicialString=str(input())

words=inicialString.split(" ")
def countTheLetters(t):
 thingsList=[]
 for word in words:
  for x in word:
   n=word.count(x)
   j=x,n
   thingsList.append(j)
 return thingsList

print(countTheLetters(words))