我很困惑,这令人难以置信,这可能是一个愚蠢的错误,但是我对此行为完全迷住了。这是小算法(我认为应该如此):
a, b, n = input().split()
x = 0
def prod(num):
x=1
for y in range(len(num)):
if int(num[y])>0:
x*=int(num[y])
x+=int(num)
return x
while x < int(n):
a, b = b, prod(b)+prod(a)
print(b, end=' ')
x+=1
这显然是我必须要做的才能使它起作用:
a, b, n = input().split()
x = 0
def prod(num):
x=1
for y in range(len(str(num))):
if int(str(num)[y])>0:
x*=int(str(num)[y])
x+=int(num)
return x
while x < int(n):
a, b = b, prod(b)+prod(a)
print(b, end=' ')
x+=1
因此,如果不清楚,我的问题出在prod函数中。似乎没有明显的原因将字符串转换为int。
我提供的输入1 100 3
应该是这种格式。
Python并不是将您的字符串隐式地转换为整数,不是。而是给函数一个整数。
您将从prod()
下一个操作返回一个整数,然后将该整数传递给该prod()
函数。
这些步骤是:
a, b, n = '1', '100', '3'
prod('100') + prod('1')
,产生101 + 2
为3
,是一个整数。a, b = '100', 3
,所以现在b
是整数,请转到下一个迭代。prod(3) + prod('100')
; 您将整数传递给函数。也许您需要转换总和以返回一个字符串prod()
?将您的退货单更改为:
return str(x)
或者prod()
结果的总和应该是一个字符串:
a, b = b, str(prod(b) + prod(a))
您可以将函数简化为直接迭代num
,并使用单个字符也具有顺序的事实:
def prod(num):
x = 1
for digit in num:
if digit > '0':
x *= int(digit)
x += int(num)
return x # or `str(x) if a string is expected
您的while
循环应该只是与的for
循环range()
:
for iteration in range(int(n)):
a, b = b, str(prod(b) + prod(a))
print(b, end=' ')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句