为什么我的Python脚本根本不起作用?

SL

我正在为“项目Euler”编写代码,这基本上是在线上的数学/计算机科学,可以在这里找到其链接

因此,无论如何,当我运行Python 3.5中的代码时,除了光标位闪烁之外,它在shell中什么都没有做。这是有问题的代码:

`mylist=[]
a=1
b=2
c=a+b
def fib():
    a=1
    b=2
    c=a+b
    a=b
    b=c
    c=a+b
if a%2==0:
    mylist.append(a) and print(a)
elif b%2==0:
    mylist.append(b) and print(b)
elif c%2==0:
    mylist.append(c) and print(c)
else:
    print(end='')
while a and b and c<4000000:
    fib()
print(sum(mylist))'

我想回答的问题是

通过考虑斐波那契数列中值不超过400万的项,找到偶值项的总和。

该代码旨在将甚至多达400万的斐波那契数加到列表中,然后打印它们的总和,这将完美地回答该问题,但似乎不起作用。

伊莱森

您在此处创建了一个无限循环:

while a and b and c < 4000000:

这表示“当a是真实的,而b是真实的,而c小于4000000”时,它将始终True如此,因此while循环将永远不会终止。我所说的“真实”是指:bool(value)回报True吗?如果是这样,那value就是“真实的”。所以1'hello'[]等等,都是truthy,和0False[],等等,都没有(他们是“falsey”)。我不会评论您的所有逻辑,因为您将从自己解决问题中受益更多。但是,这里有一些技巧可以使您摆脱困境:

  1. 如果要检查ab以及c所有小于4000000,比你可以这样做:

    while a < 4000000 and b < 4000000 and c < 4000000:
    

    或更简洁地:

    while all(i < 4000000 for i in [a, b, c]):
    
  2. 为了不创建一个无限循环,你将需要确保,要么abc将罪证它们的值大于400万在你的程序的一些点。你做数学题abc 里面fib()函数只操纵三个变量叫ab以及c那些局部的功能; 它不会改变的值abc 外面那个功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章