Twilight6 发表于 2020-3-20 20:16:44

def 函数!欧几里得算数问题

本帖最后由 Twilight6 于 2020-3-29 15:08 编辑

>>>def gcd(x,y):
                while True:
                          if (x % y == 0) or (z % k == 0):
                                 return y
                              z = x % y
                        k = y % z
                     continue
      
>>>gcd(1997,615)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 3, in gcd
UnboundLocalError: local variable 'z' referenced before assignment

我一直不懂哪错了。。。

Twilight6 发表于 2020-3-20 20:17:40

上面发的缩进什么的没对齐别介意拷贝时候毁掉了。。。

qiuyouzhi 发表于 2020-3-20 20:20:13

Twilight6 发表于 2020-3-20 20:17
上面发的缩进什么的没对齐别介意拷贝时候毁掉了。。。

你的z在if循环前面没有定义啊

永恒的蓝色梦想 发表于 2020-3-20 20:58:03

Twilight6 发表于 2020-3-20 20:17
上面发的缩进什么的没对齐别介意拷贝时候毁掉了。。。

你的缩进毁了我怎么知道你的代码写的啥?

Twilight6 发表于 2020-3-20 20:58:48

qiuyouzhi 发表于 2020-3-20 20:20
你的z在if循环前面没有定义啊

>>>def gcd(x,y):
...   z = x
...   k = y
...   while True:
...         if (x % y == 0) or (z % k == 0):
...             return y
...         z = x % y
...         k = y % z
...         continue
...         
>>>gcd (1997,615)
之后就没反应了。。。也没有>>>出来

wp231957 发表于 2020-3-20 21:00:00

Twilight6 发表于 2020-3-20 20:58
>>>def gcd(x,y):
...   z = x
...   k = y


没有print你想要啥反应?

qiuyouzhi 发表于 2020-3-20 21:01:37

Twilight6 发表于 2020-3-20 20:58
>>>def gcd(x,y):
...   z = x
...   k = y


你这个z,x,k,y都没变,能有答案才怪

Twilight6 发表于 2020-3-20 21:08:12

wp231957 发表于 2020-3-20 21:00
没有print你想要啥反应?

循环等return呀欧几里得算术法我记得这个是等于1

Twilight6 发表于 2020-3-20 21:12:12

qiuyouzhi 发表于 2020-3-20 21:01
你这个z,x,k,y都没变,能有答案才怪

后面不是有 z = x%y 和 k=y%z吗不是会变吗

qiuyouzhi 发表于 2020-3-20 21:13:34

Twilight6 发表于 2020-3-20 21:12
后面不是有 z = x%y 和 k=y%z吗不是会变吗

是啊
变来变去就那几个
页: [1]
查看完整版本: def 函数!欧几里得算数问题