这是我从Project Euler编写一个编程难题的一小段代码.我正在阅读1000位数的文件,并试图找到具有最大产品的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)
到屏幕上,那么它就是一个数字.我怎样才能解决这个问题?
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
Run Code Online (Sandbox Code Playgroud)
这是Traceback:
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()
Run Code Online (Sandbox Code Playgroud)
您的错误实际上在if语句下面的行中:
if prod_over_str(s) > max_prod:
max_prod = prod_over_str
Run Code Online (Sandbox Code Playgroud)
首先检查函数的返回值,然后将函数本身分配给max_prod.
你需要做这样的事情:
if prod_over_str(s) > max_prod:
max_prod = prod_over_str(s)
Run Code Online (Sandbox Code Playgroud)
要么:
prod = prod_over_str(s)
if prod > max_prod:
max_prod = prod
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
73 次 |
最近记录: |