2016-09-23 121 views
0

我正在运行一个递归函数,它接受一个正整数和一个列表(它更新,因为它运行通过函数):无效文字为int()与基地10:''为地图(int,str(num))

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

@AmiTavory显然他正在喂一个空的字符串作为数字 – RPGillespie

+0

代码显示正常,你给你的输入num =“”。 – rlbond

回答

0

听起来好像是从文件中解析数字,当空间' '或换行符'\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不是一个字符串的数字,除了将一个空列表[]。如果您愿意,可以用末尾的''替换为另一个默认值。

相关问题