在Python中带整数的while是什么意思?这个GCD代码是如何工作的?

2024-06-25 06:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现了一个最大的共同点:

def gcd(x,y):
    while y:
        x, y = y, x % y
    return x

我不明白我们所说的while y是什么意思,因为y是一个整数。它是如何工作的?此外,x, y = y, x % y行向代码添加了什么?在


Tags: 代码returndef整数whilegcd共同点行向
3条回答

只要while y不为零,表达式while y将迭代。在

另一条线以原子方式执行两个操作:

new_x <-- old_x
new_y <-- old_x mod old_y

这将对GCD执行欧几里德算法,元组分配避免了对临时变量的需要。在

对于while,请阅读以下内容:http://docs.python.org/reference/compound_stmts.html#the-while-statement

它说“这会反复测试表达式,如果是真的,则执行第一个套件

现在的问题是:什么是真的?在

读这个:http://docs.python.org/library/functions.html#bool

然后读这个:http://docs.python.org/library/stdtypes.html#truth-value-testing

非零值为真。零是假的。在

What does the line "x, y=y, x%y" add to the code?

作为一个问题,没有什么意义。”添加到代码中“?什么?哪个部分令人困惑?在

读这个:http://docs.python.org/reference/simple_stmts.html#assignment-statements

如果目标列表是以逗号分隔的目标列表:该对象必须是一个iterable,其项数必须与目标列表中的目标数相同,并且这些项从左到右分配给相应的目标

对于整数“%”运算符,请阅读以下内容:http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex

如果你的问题更具体一点会有帮助。很难按要求回答。在

  1. 循环在y==0时停止。

  2. 循环体同时将y分配给x,并将{}分配给y。否则,您将需要一个临时变量来执行这两个赋值,因为其中一个赋值将被覆盖。

相关问题 更多 >