鱼C论坛

 找回密码
 立即注册
查看: 1093|回复: 10

[已解决]条件先后问题?

[复制链接]
发表于 2020-6-24 11:06:47 | 显示全部楼层 |阅读模式

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

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

x
class Solution(object):

    def fizz_buzz(self, num):
        if num == None:
            raise TypeError('hahah')
        if num < 1:
            raise ValueError('heiheih')
        result = []
        for i in range(1, num+1):
            if i % 3 == 0 and i % 5 == 0:
                result.append('FizzBuzz')
            elif i % 5 == 0:
                result.append('Buzz')
            elif i % 3 == 0:
                result.append('Fizz')
            else:
                result.append(str(i))
        return result

我自己写的是把if i % 3 == 0 and i % 5 == 0:放在第三个位置上了,所以当num能被3和5同时整除的时候只返回了Fizz.
请问判断条件的设置有什么规则吗?
最佳答案
2020-6-24 11:26:34
白白白白丶白 发表于 2020-6-24 11:20
就在这个问题上,我最先想到的就是先判断 i % 3 ==0 可是的出来的结果是错的,在这个问题上判断的先后有 ...



肯定有先后呀,你的 i % 3 == 0 这个条件是 i % 3 == 0 and i % 5 == 0 这个条件的子集呀,满足 i % 3 == 0

可是不一定满足 i % 3 == 0 and i % 5 == 0 呀,如果你判断  i % 3 == 0 或者 i % 5 == 0 在 i % 3 == 0 and i % 5 == 0 之前,那么 这个条件永远不会被执行到

因为在 if-elif 下只要有一个条件成立,其他条件就不在执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-24 11:16:37 | 显示全部楼层


我自己写的是把if i % 3 == 0 and i % 5 == 0:放在第三个位置上了,所以当num能被3和5同时整除的时候只返回了Fizz.
请问判断条件的设置有什么规则吗?


看你具体情况,就具体分析了呀,有些条件你想最先判断,肯定要放优先位置咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-24 11:20:14 | 显示全部楼层
Twilight6 发表于 2020-6-24 11:16
看你具体情况,就具体分析了呀,有些条件你想最先判断,肯定要放优先位置咯

就在这个问题上,我最先想到的就是先判断 i % 3 ==0 可是的出来的结果是错的,在这个问题上判断的先后有影响的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 11:23:53 | 显示全部楼层
比如有3个水龙头(判断条件)连接着一个池子:
水龙头A:如果池子里是水,那就放出;
水龙头B:如果池子里是油,那就放出;
水龙头C:如果池子里是液体,那就自爆掉池子;
这时候判断语句的顺序如果是先A再B再C,那池子里是油的话会在B流出;
如果是先C再B再A,那池子里是油的话就会自爆了;

所以,判断条件的设置并没太多规则,而是根据你想实现什么,你的需求是什么。比如上面的例子,我想实现的是:如果是水或者油的话就流出来,否则自爆掉。那么我一定不能把判断C放到A和B的前面,否则就达不到我的需求了;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 11:26:34 | 显示全部楼层    本楼为最佳答案   
白白白白丶白 发表于 2020-6-24 11:20
就在这个问题上,我最先想到的就是先判断 i % 3 ==0 可是的出来的结果是错的,在这个问题上判断的先后有 ...



肯定有先后呀,你的 i % 3 == 0 这个条件是 i % 3 == 0 and i % 5 == 0 这个条件的子集呀,满足 i % 3 == 0

可是不一定满足 i % 3 == 0 and i % 5 == 0 呀,如果你判断  i % 3 == 0 或者 i % 5 == 0 在 i % 3 == 0 and i % 5 == 0 之前,那么 这个条件永远不会被执行到

因为在 if-elif 下只要有一个条件成立,其他条件就不在执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-24 11:39:47 | 显示全部楼层
Twilight6 发表于 2020-6-24 11:26
肯定有先后呀,你的 i % 3 == 0 这个条件是 i % 3 == 0 and i % 5 == 0 这个条件的子集呀,满足 i %  ...

都换了if。答案对了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-24 12:59:00 | 显示全部楼层


if 是每个条件都可以进行一次判断的~  

而elif 只要同缩进下有一个条件成立就不在判断了

所以你要注意 if 和 elif 的使用哈~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-30 11:00:08 | 显示全部楼层
Twilight6 发表于 2020-6-24 12:59
if 是每个条件都可以进行一次判断的~  

而elif 只要同缩进下有一个条件成立就不在判断了

大佬,有个问题问一下,我是转行的,计算机等级考试需不需要去考一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 11:16:48 | 显示全部楼层
白白白白丶白 发表于 2020-6-30 11:00
大佬,有个问题问一下,我是转行的,计算机等级考试需不需要去考一下

证越多越好,不要问为什么,我想转计算机专业现在都不让转了 难受
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-30 11:30:07 | 显示全部楼层
Twilight6 发表于 2020-6-30 11:16
证越多越好,不要问为什么,我想转计算机专业现在都不让转了 难受

你还是在校学生吗,今年上半年的计算机等级考试是取消了吧,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 16:22:28 | 显示全部楼层
白白白白丶白 发表于 2020-6-30 11:30
你还是在校学生吗,今年上半年的计算机等级考试是取消了吧,

我还宅在家里呢....学校没开学在家上网课,我也想考 计算机证  有机会一定去考掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 07:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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