找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3207|回复: 6

[已解决] 求大牛,看看这个脚本。死活想不通啊。

2

主题

5

帖子

5

积分

贫民

积分
5
lilililixuewu 发表于 2017-9-6 10:24:39 | 显示全部楼层 |阅读模式
环境python34

def nbr_of_laps(x, y):
    if (x%y == 0 ):return [1,int(x/y)]
    if (y%x == 0 ):return [1,int(y/x)]
    if x/y > 1:
        max = x
        min = y
    else:
        max = y
        min = x
    for i in range(1,min+1):
        if ((i*max)%min) == 0:
            length = i*max

    return [int(length/x),int(length/y)]

类似求公倍数的函数
为什么nbr_of_laps(4,6)
return[6,4]?


回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2017-9-6 16:28:23 | 显示全部楼层
你把 return [int(length/x),int(length/y)]放到 if 语句后面就对了
for i in range(1,min+1):
        if ((i*max)%min) == 0:
            length = i*max
            return [int(length/x),int(length/y)]
回复 支持 1 反对 0

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-9-6 14:47:24 | 显示全部楼层
x=4,y=6, x%y是4, y%x是2, x/y是0.6666... 所以max=6,min=4,i是1~4的循环,只有i=4时i*max%min才是0,所以length=24(最小公倍数)返回值是[6, 4](最小公倍数除以原数)
回复 支持 反对

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
懒py 发表于 2017-9-6 14:53:52 | 显示全部楼层
return 不在循环范围,结果只返回循环最后一次符合条件的结果,即i为4的时候,所以返回[6,4]

我是这么理解的
回复 支持 反对

使用道具 举报

2

主题

5

帖子

5

积分

贫民

积分
5
lilililixuewu  楼主| 发表于 2017-9-7 09:03:01 | 显示全部楼层
uitb 发表于 2017-9-6 16:28
你把 return 放到 if 语句后面就对了
for i in range(1,min+1):
        if ((i*max)%min) == 0:

谢谢点拨!通了!
回复 支持 反对

使用道具 举报

2

主题

5

帖子

5

积分

贫民

积分
5
lilililixuewu  楼主| 发表于 2017-9-7 09:04:23 | 显示全部楼层
剑心无痕 发表于 2017-9-6 14:47
x=4,y=6, x%y是4, y%x是2, x/y是0.6666... 所以max=6,min=4,i是1~4的循环,只有i=4时i*max%min才是0,所 ...

一楼是正解
回复 支持 反对

使用道具 举报

2

主题

5

帖子

5

积分

贫民

积分
5
lilililixuewu  楼主| 发表于 2017-9-7 09:04:49 | 显示全部楼层
懒py 发表于 2017-9-6 14:53
return 不在循环范围,结果只返回循环最后一次符合条件的结果,即i为4的时候,所以返回[6,4]

我是这么 ...

谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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