gpt4 book ai didi

Python 函数不评估

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:10 25 4
gpt4 key购买 nike

这是我用于解决 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) 是一个 intmax_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

这是回溯:

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()

最佳答案

您的错误实际上是在 if 语句下面的行中:

if prod_over_str(s) > max_prod: 
max_prod = prod_over_str

首先检查函数的返回值,然后将函数本身分配给 max_prod。

你需要做这样的事情:

if prod_over_str(s) > max_prod:
max_prod = prod_over_str(s)

或者:

prod = prod_over_str(s)
if prod > max_prod:
max_prod = prod

关于Python 函数不评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34559775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com