鱼C论坛

 找回密码
 立即注册
查看: 2777|回复: 12

[已解决]求帮忙解读一段很基础的代码

[复制链接]
发表于 2016-8-7 11:40:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看到while,if,else这类循环代码时,有时看到后面的判断条件有点看不懂,大多数情况下,while,if后面的判断条件都是诸如此类的,比如
while x>y:
    return x
或者
if x>y:
    return x
上面翻译成中文就是说,如果x>y,就返回x,这类加入明显的判断条件的,作为小白的我能够看懂,但是有时候while直接加入没有明显判断条件的语句,我就有点看不懂了,比如
def gcd(x, y):
    if y:
        return gcd(y, x%y)
    else:
        return x
    
print(gcd(4, 6))

我对这段代码的解读是这样的,定义一个gcd函数,该函数有两个参数,函数体中if y:,这里,我的解读是,如果y,就返回函数本身,而函数新的参数是原来的x和x除以y的余数,关键是y到底要满足什么,就返回gcd(y, x%y),这里if y的判断条件没有看明白,新手指教,请各位大神帮忙解读一下疑惑。
最佳答案
2016-8-7 15:42:36
条件表达式 和 条件语句  的默认转换技巧~
http://bbs.fishc.com/thread-74636-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-7 11:49:46 | 显示全部楼层
if y:

如果 y 不等于 0

bool 类有2个值 True 和 False
True = 1
False = 0

--------
y=0 ,就是 False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 13:01:50 | 显示全部楼层
到y=0为止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 13:23:32 | 显示全部楼层
SixPy 发表于 2016-8-7 11:49
if y:

如果 y 不等于 0

可是if y:怎么体现了y不等于0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 13:26:03 | 显示全部楼层
y等于x除以y的余数,直到余数为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 13:32:51 | 显示全部楼层
小由的爸 发表于 2016-8-7 13:26
y等于x除以y的余数,直到余数为0

在哪里申明了y=x%y
函数体中只有一个return有参数x%y
现在疑惑的是if y,怎么体现了这里表达的是if y不等于0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 13:51:18 | 显示全部楼层
寒园 发表于 2016-8-7 13:23
可是if y:怎么体现了y不等于0

Y 不等于0 表示if Y为真   ,你可以理解为True 非0  ,False为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 14:27:43 | 显示全部楼层
Krant5 发表于 2016-8-7 13:51
Y 不等于0 表示if Y为真   ,你可以理解为True 非0  ,False为0

可能是文字表达不行,我的意思是就单单if y这三个字母,怎么解读表达的意思就是if y不等于0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 14:50:09 | 显示全部楼层
寒园 发表于 2016-8-7 14:27
可能是文字表达不行,我的意思是就单单if y这三个字母,怎么解读表达的意思就是if y不等于0

if y:
等价于
if y != 0:

你觉得怎样好理解就怎么写~
ok
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 15:42:36 | 显示全部楼层    本楼为最佳答案   
条件表达式 和 条件语句  的默认转换技巧~
http://bbs.fishc.com/thread-74636-1-1.html
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 15:48:57 | 显示全部楼层
寒园 发表于 2016-8-7 14:27
可能是文字表达不行,我的意思是就单单if y这三个字母,怎么解读表达的意思就是if y不等于0

..........没这个意思啊,不用这么解读,只是程序员利用规则这么写而已,你只需要知道 非0 为真,0 为假 ,这就足够了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 16:10:31 | 显示全部楼层
if y:怎么体现了y不等于0
楼上回答很清楚了, 再解释会更晕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-7 18:42:20 | 显示全部楼层
递归操作吧,直到y==0,跳出递归,返回x
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-9 05:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表