Вернуть None пока не должно - PullRequest
0 голосов
/ 24 августа 2018

Я действительно запутался в этом вопросе, почему моя функция тоже возвращает None?

def CharFreq(string):

    l = list(string)

    for i in range(len(l)):
        count = 0
        print(l[i])
        for j in range(0,len(l)):
               if l[i] == l[j] :
                  count+=1
       print (l[i],count)

print(CharFreq("hih"))

Во-первых, моя функция тоже возвращает None, и когда я ставлю строку print(l[i]), онатакже возвращает None ... но когда я делаю это в одиночку, я не вижу None:

 l = list("hih")
for i in range(len(l)):
    print(l[i])

Во-вторых, я пытаюсь разработать базовый подход к частоте символов с использованием двух петель, а не толькоон тоже возвращает None, но, похоже, мои индексы неверны, мне нужно его вернуть:

h , 2
i, 1

Ответы [ 2 ]

0 голосов
/ 24 августа 2018
def CharFreq(string):

    n= len(string)
    ll=[]
    for i in range(n):
        count = 0

        for j in range(n):
                if string[i] == string[j] :
                   count+=1
        if (string[i],count) not in ll:        
               ll.append(tuple((string[i],count)))
    return ll  

print(CharFreq("hih"))
0 голосов
/ 24 августа 2018

Я бы настоятельно рекомендовал использовать dict для вычисления количества символов.

Они могут быть реализованы следующим образом:

def CharFreq(string):

    str_count = dict()
    for i in string:
        if i in str_count:
            str_count[i] += 1
        else:
            str_count[i] = 1
    return str_count

print(CharFreq("hih"))

Вывод:

{'h': 2, 'i': 1}

ПолучениеВернемся к вашему решению:

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

...