def append(string,chars): ##append list to a string
q = 0
while q < len(string):
if string[q] == " " and chars[q] != " ":
string[q] = chars[q]
q+=1
Это явно не возвращает значение, поэтому оно неявно возвращает None
.
(Имя string
здесь также очень плохой выбор: во-первых, вы ожидаете, что его передадут список, а не строка (поскольку, как вы, вероятно, узнали ранее, вы не можете изменить строку, подобную этой), а во-вторых, она скрывает импортированный модуль * 1006. * Но опять же, ваш код не использует Модуль string
, поэтому вы не должны import
его вообще.)
str = (append(current, printmatches(word,char)))
Теперь str
- это None
, потому что это результат вызова append
.
if (convertlist(str) == word):
Теперь мы пытаемся convertlist
с None
, что, конечно, не работает, поскольку мы хотели, чтобы список был передан в ...
def convertlist(x):
q = " "
a = 0
while (a < len(x)):
q+=x[a]
a+=1
return (q)
.. и, следовательно, здесь len
недопустимо применительно к None
.
Естественным способом получения информации из функции является return
этой информации. Создайте новую строку в append
и return
it; тогда вы можете использовать результат так, как вы пытаетесь его использовать. В качестве бонуса, поскольку вы создаете новый объект, вы можете фактически снова передать строку.
За исключением того, что я понятия не имею, почему эта функция называется append
, поскольку, несмотря на комментарий, она не ' кажется, намеревался сделать что-нибудь подобное ...