[英]Can someone explain to me why python 3.4 is parsing a string to an int without me explicitly asking for it
我很困惑,這令人難以置信,這可能是一個愚蠢的錯誤,但是我對此行為完全迷住了。 這是小算法(我認為應該如此):
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
循環應該只是帶有range()
的for
循環:
for iteration in range(int(n)):
a, b = b, str(prod(b) + prod(a))
print(b, end=' ')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.