可分性测试算法

Jam*_*pam -1 python algorithm math

编写一个名为FooBar的函数,它接受输入整数n并在新行中打印从1到n的所有数字.如果数字可被3整除,则打印"Foo",如果数字可被5整除,则打印"Bar",如果数字可被3和5整除,则打印"FooBar".否则只需打印该号码.

for example FooBar(15) should print as follows: 
1 
2 
Foo 
4 
Bar 
Foo 
7 
8 
Foo 
Bar 
11 
Foo 
13 
14 
FooBar 
Run Code Online (Sandbox Code Playgroud)

它很容易但面试正在检查更好的算法.

我首先想到的是:

for i in xrange(1,101): print [i,'Fizz','Buzz','FizzBuzz'][(i%3==0)+2*(i%5==0)]
Run Code Online (Sandbox Code Playgroud)

如果您有任何其他解决方法,请建议.

小智 5

def foobar(n):
    for x in range(n):
        print x%3/2 * 'Foo' + x%5/4 * 'Bar' or x+1
Run Code Online (Sandbox Code Playgroud)