白白白白丶白 发表于 2020-6-24 11:06:47

条件先后问题?

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.
请问判断条件的设置有什么规则吗?

Twilight6 发表于 2020-6-24 11:16:37



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

看你具体情况,就具体分析了呀,有些条件你想最先判断,肯定要放优先位置咯

白白白白丶白 发表于 2020-6-24 11:20:14

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

就在这个问题上,我最先想到的就是先判断 i % 3 ==0 可是的出来的结果是错的,在这个问题上判断的先后有影响的呀

yhhpf 发表于 2020-6-24 11:23:53

比如有3个水龙头(判断条件)连接着一个池子:
水龙头A:如果池子里是水,那就放出;
水龙头B:如果池子里是油,那就放出;
水龙头C:如果池子里是液体,那就自爆掉池子;
这时候判断语句的顺序如果是先A再B再C,那池子里是油的话会在B流出;
如果是先C再B再A,那池子里是油的话就会自爆了;

所以,判断条件的设置并没太多规则,而是根据你想实现什么,你的需求是什么。比如上面的例子,我想实现的是:如果是水或者油的话就流出来,否则自爆掉。那么我一定不能把判断C放到A和B的前面,否则就达不到我的需求了;

Twilight6 发表于 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 下只要有一个条件成立,其他条件就不在执行

白白白白丶白 发表于 2020-6-24 11:39:47

Twilight6 发表于 2020-6-24 11:26
肯定有先后呀,你的 i % 3 == 0 这个条件是 i % 3 == 0 and i % 5 == 0 这个条件的子集呀,满足 i %...

都换了if。答案对了

Twilight6 发表于 2020-6-24 12:59:00

白白白白丶白 发表于 2020-6-24 11:39
都换了if。答案对了

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

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

所以你要注意 if 和 elif 的使用哈~~~

白白白白丶白 发表于 2020-6-30 11:00:08

Twilight6 发表于 2020-6-24 12:59
if 是每个条件都可以进行一次判断的~

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


大佬,有个问题问一下,我是转行的,计算机等级考试需不需要去考一下

Twilight6 发表于 2020-6-30 11:16:48

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

证越多越好,不要问为什么,我想转计算机专业现在都不让转了 难受

白白白白丶白 发表于 2020-6-30 11:30:07

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

你还是在校学生吗,今年上半年的计算机等级考试是取消了吧,

Twilight6 发表于 2020-6-30 16:22:28

白白白白丶白 发表于 2020-6-30 11:30
你还是在校学生吗,今年上半年的计算机等级考试是取消了吧,

我还宅在家里呢....学校没开学在家上网课,我也想考 计算机证有机会一定去考掉
页: [1]
查看完整版本: 条件先后问题?