Подсчитайте, сколько раз буква появляется в слове, и поместите их в следующем формате: - PullRequest
0 голосов
/ 25 ноября 2018

Мне нужно создать программу, которая с учетом фразы подсчитывает, сколько раз буква появляется в каждом слове и печатает ее следующим образом:

Ввод:

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)]

Я пытался заменить возвращаемый thingList, но тогда он работал только для последнего слова.

Ответы [ 4 ]

0 голосов
/ 25 ноября 2018

обновил ваш код, проверьте сейчас

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))
0 голосов
/ 25 ноября 2018

Проблема в том, что вы возвращаетесь из своей функции, как только вы проверяете первое слово, вместо этого вы должны добавить результат вашего текущего слова в некоторый окончательный список и вернуть его после обработки всех слов.

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)]
0 голосов
/ 25 ноября 2018

Проблема заключается в том, что вы сбрасываете "thingsList" на каждой итерации цикла "for word in words", а также возвращает список thingsList только после 1 итерации.

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))
0 голосов
/ 25 ноября 2018

Вы очищаете thingsList каждый раз через цикл for word in words:, поэтому вы получаете только последнее слово.

Поставьте thingsList = [] перед первым for оператором.

...