Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是';而';在Python中使用整数平均值,那么GCD代码是如何工作的?_Python_Python 3.x - Fatal编程技术网

什么是';而';在Python中使用整数平均值,那么GCD代码是如何工作的?

什么是';而';在Python中使用整数平均值,那么GCD代码是如何工作的?,python,python-3.x,Python,Python 3.x,我发现了这个最大的共同点代码: def gcd(x,y): while y: x, y = y, x % y return x 我不明白我们所说的是什么意思,因为y是一个整数。它是如何工作的?此外,行x,y=y,x%y向代码添加了什么 当y==0时,循环停止 循环体同时将y分配给x和x%y分配给y。否则,您将需要一个临时变量来执行这两个赋值,因为其中一个赋值将被覆盖 使用 只要y不为零,表达式while y就会迭代 另一行以原子方式执行两个操作: new_x &

我发现了这个最大的共同点代码:

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

  • y==0
    时,循环停止

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


  • 使用


    只要
    y
    不为零,表达式
    while y
    就会迭代

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

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

    new\u x对于
    ,请阅读以下内容:

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

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

    请阅读以下内容:

    然后读一读:

    非零值为真。零是假的

    “x,y=y,x%y”这一行给代码增加了什么

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

    请阅读以下内容:

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

    对于整数“%”运算符,请阅读以下内容:


    如果你的问题更具体一些,会有帮助的。很难回答问题。

    一个优雅的小算法!这里使用的
    y
    bool(y)
    类似,当且仅当
    y!=0
    。中间一行是python中的一点语法糖,元组解包。@wim:请将这样的答案作为答案发布,以便我们可以正确地投票。
    new_x <-- old_x
    new_y <-- old_x mod old_y