我正在运行一个递归函数,它接受一个正整数和一个列表(在函数运行时更新):
def happy_number(num, tracking_list = []):
if (num == 1):
print 1
else:
digit_list = map(int, str(num))
digit_sum = 0
for n in digit_list:
digit_sum = (n ** 2) + digit_sum
if digit_sum in tracking_list:
print 0
else:
tracking_list.append(digit_sum)
happy_number(digit_sum, tracking_list)
运行时,它会抱怨:
digit_list = map(int, str(num))
它给出了错误:
ValueError: invalid literal for int() with base 10: ''
这里发生了什么?
答案 0 :(得分:0)
听起来你正在从一个文件中解析你的数字,当一个空格label_from_instance
或换行符' '
出现时(或任何不是字符串数字的那个),你的脚本将失败。你可以尝试:
'\n'
该行:
def happy_number(num, tracking_list = []):
if (num == 1):
print 1
else:
digit_list = map(int, str(num if num.isdigit() else ''))
digit_sum = 0
for n in digit_list:
digit_sum = (n ** 2) + digit_sum
if digit_sum in tracking_list:
print 0
else:
tracking_list.append(digit_sum)
happy_number(digit_sum, tracking_list)
将执行与之前相同的操作,但如果您传递digit_list = map(int, str(num if num.isdigit() else ''))
不是字符串数字,则将为空列表[]
。如果您愿意,请将最后的num
替换为另一个默认值。