這裏有一小段代碼用於處理來自Project Euler的編程難題。我正在閱讀1,000位數字的文件,並試圖找到13個具有最大產品的相鄰文件。問題是行max_prod = prod_over_str(s)
沒有將max_prod
設置爲返回值prod_over_str
,而是一個函數和運行該腳本導致語句if prod_over_str(s) > max_prod
中的錯誤,因爲prod_over_str(s)
是int
還有max_prod
函數。然而,如果我將prod_over_str(s)
的值打印到屏幕上,它就是一個數字。我怎樣才能解決這個問題?Python函數沒有評估
def prod_over_str(s):
prod = 1
for c in s:
prod *= int(c)
return prod
with open('/path/text.txt') as f:
s = f.read(13)
max_prod = prod_over_str(s)
while True:
c = f.read(1)
if not c:
break
s = s[1:] + c
if prod_over_str(s) > max_prod:
max_prod = prod_over_str
這裏是回溯:
In [18]: %run problem8.py
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/dsaxton/Desktop/Python/project_euler/problem8.py in <module>()
14 break
15 s = s[1:] + c
---> 16 if prod_over_str(s) > max_prod:
17 max_prod = prod_over_str
18
TypeError: unorderable types: int() > function()
如何改變'str'另一個變量的名字,說'my_str'以避免陰影內置的方法' str' –
你的腳本產生了什麼樣的錯誤?請給出一個完整的堆棧跟蹤。 –
這樣做有什麼不同嗎? –