【发布时间】:2018-05-07 03:33:13
【问题描述】:
我认为该错误意味着它正在接收其他数据类型,尽管它期望另一种数据类型,但我可能是错的,因为我是 python 的初学者。有人知道如何解决这个问题吗?
#Program to calculate factorial of a long number
def multiply(multiplier,multiplicand):
a = long(''.join(multiplier))
b = long(''.join(multiplicand))
a = a*b
multiplier = list(str(a))
b = b-1
multiplicand = list(str(b))
if(b == 1):
return False,multiplier,multiplicand
else:
return True,multiplier,multiplicand
num = ""
f = True # A flag variable
while(f): #checks if the string consists of digits only
num = raw_input("Enter number:")
f = False
if num.isdigit() == False:
print "oops,try again!"
f = True
multiplier = list(num)
multiplicand = multiplier[:]
multiplicand.pop()
multiplicand.insert(len(multiplier),str(long(multiplier[-1])-1)) #mand now contains multiplier -1 in list form
f = True
while (f):
f,multiplier,multiplicand = multiply(multiplier,multiplicand)
num = ''.join(multiplier)
print num #print the ans as a string
只要输入的值低于50,代码就可以正常运行,但在50之后就会显示错误:
Traceback (most recent call last):
File "test.py", line 31, in <module>
f,multiplier,multiplicand = multiply(multiplier,multiplicand)
File "test.py", line 5, in multiply
b = long(''.join(multiplicand))
ValueError: invalid literal for long() with base 10: '5-1'
“5-1”是什么意思?
【问题讨论】:
标签: python-2.7 traceback valueerror