这里有一小段代码用于处理来自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' –
你的脚本产生了什么样的错误?请给出一个完整的堆栈跟踪。 –
这样做有什么不同吗? –