编辑你的函数你需要清除()你的字典,因为它是静态声明。您声明的字典是静态的,它不会在每次调用时重新创建,因此您需要清除它或按以下方式编写:
def challenge1(single_word):
complete_number={}
更正代码:
def challenge1(single_word, complete_number={}):
if not complete_number:
uniques = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve",
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]
teners = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
big_nums = ["hundred", "thousand", "million"]
negative = ["negative"]
for index, word in enumerate(uniques):
complete_number[word] = (1, index)
for index, word in enumerate(teners):
complete_number[word] = (1, index * 10)
for index, word in enumerate(big_nums):
complete_number[word] = (10 ** (index * 3 or 2), 0)
current = 0
result = 0
for word in single_word.split():
if word not in complete_number:
print("Input is not a number. Please see the examples of how to enter number /n six /n negative seven"
" hundred twenty nine, /n one million one hundred one")
scale, increment = complete_number[word]
current = current * scale + increment
if scale > 100:
result += current
current = 0
complete_number.clear()
return result + current