有没有一种方法可以检查多个语句是否使用单个“elif”是真的?

问题描述:

针对this challenge,我写了下面的代码:有没有一种方法可以检查多个语句是否使用单个“elif”是真的?

for i in range(1, 101): 
    if i % 3 == 0: 
     print("Fizz") 
    if i % 5 == 0: 
     print("Buzz") 
    if i % 15 == 0: 
     print("Fizzbuzz") 
    elif i % 3 !=0: 
     print(i) 
    elif i % 5 !=0: 
     print(i) 
    elif i % 15 !=0: 
     print(i) 

它的工作原理,但我不知道这是最有效的方法。例如,我不确定的一件事是如何使用1 elif来包含多个可分性测试。任何帮助感谢!

+2

我不认为这样做的工作。这将打印“FizzBu​​zz”两次,倍数为15. – CollinD

+2

您写的内容实际上不起作用。 – user2357112

这是任何数量的最有效的方法:

def fizzbuzz(n): 
    output = '' 
    if n % 3 == 0: 
     ''.join(output, 'Fizz') 
    if n % 5 == 0: 
     ''.join(output, 'Buzz') 
    return output if output else str(n) 

print "\n".join(fizzbuzz(n) for n in xrange(1, 21)) 
+0

你的第一个如果可能只是'n%15'。对于相同的结果,单个比较而不是两个。您也可以通过保留一个返回字符串并加入'Fizz'3和'Buzz'5来消除比较。如果它们都是真的,则返回'FizzBu​​zz'。无需检查15. –

+0

请求编辑答案,如果您可以正确格式化我很乐意将您添加为协作者。 :) – Jeremy

而不是做的:

elif i % 3 !=0: 
    print(i) 
elif i % 5 !=0: 
    print(i) 
elif i % 15 !=0: 
    print(i) 

你可以做

elif i % 3 !=0 or i % 5 != 0 or i % 15 != 0: 
    print(i) 
+0

如何?我不明白为什么。 – Splinxyy

+3

如果一个数字可以被15整除,它必然可以被3 *和* 5整除。 – DeepSpace

+0

我回答了他的问题。我没有质疑他解决问题的逻辑。这可能是不正确的,那不是我关心的问题。他寻求帮助来缩短这个计划,并且我给了他。 – Splinxyy