«Функциональный объект - это несущественный» в базовом целочисленном целом к функции сопоставления строки
Вопрос
Я пытаюсь написать функцию, чтобы вернуть слово строку любого числа менее 1000.
Каждый раз, когда я запускаю свой код в интерактивной подсказке, оно работает без проблем, но когда я пытаюсь импортировать Optifify и запустить его с тестовым номером, выше 20, он не удается в качестве объекта «TypeError:« Функция », является необоснованным.
На основании сообщения об ошибке, кажется, это проблема, когда он пытается индексировать Numstring (например, пытаться извлечь номер 4 из тестового случая n = 24), и компилятор считает Numstring - это функция вместо строки. Поскольку первая строка функции - я определяющую Numstring как строку переменной N, я не уверен, что это так.
Любая помощь в том, чтобы обойти эту ошибку, или даже просто помочь в объяснении, почему я вижу это, будет потрясающе.
def wordify(n):
# Convert n to a string to parse out ones, tens and hundreds later.
numString = str(n)
# N less than 20 is hard-coded.
if n < 21:
return numToWordMap(n)
# N between 21 and 99 parses ones and tens then concatenates.
elif n < 100:
onesNum = numString[-1]
ones = numToWordMap(int(onesNum))
tensNum = numString[-2]
tens = numToWordMap(int(tensNum)*10)
return tens+ones
else:
# TODO
pass
def numToWordMap(num):
mapping = {
0:"",
1:"one",
2:"two",
3:"three",
4:"four",
5:"five",
6:"six",
7:"seven",
8:"eight",
9:"nine",
10:"ten",
11:"eleven",
12:"twelve",
13:"thirteen",
14:"fourteen",
15:"fifteen",
16:"sixteen",
17:"seventeen",
18:"eighteen",
19:"nineteen",
20:"twenty",
30:"thirty",
40:"fourty",
50:"fifty",
60:"sixty",
70:"seventy",
80:"eighty",
90:"ninety",
100:"onehundred",
200:"twohundred",
300:"threehundred",
400:"fourhundred",
500:"fivehundred",
600:"sixhundred",
700:"sevenhundred",
800:"eighthundred",
900:"ninehundred",
}
return mapping[num]
if __name__ == '__main__':
pass
Решение
Ошибка означает, что функция была использована там, где должен был быть список, как это:
def foo(): pass
foo[3]
Вы, должно быть, изменили какой-нибудь код.
Кстати, wordify(40)
вернулся "fourty"
. Отказ Я его пишу "forty"
И у вас нет ввода для нуля
Другие советы
Если кто-то выглядит здесь и имеет ту же проблему, у меня имел, вы также можете получить указатель на объект функции, если возвращается неправильное переменное имя. Например, если у вас есть функция:
def foo():
my_return_val = 0
return return_val
my_val = foo()
Тогда My_Val будет указателем на объект функциональности, который является еще одной причиной «TypeError:« Функциональный »объект, является неописанным« если my_val обрабатывается как список или массив, когда он действительно это функциональный объект.
Решение? Простой! Исправьте имя переменной в FO, которое возвращается в My_return_Val.