编写一个返回给定数字的程序。但是对于2的倍数返回“ Fizz”而不是数字,对于3的倍数返回“ Buzz”,对于4的倍数返回“ Bang”。对于两个和三个的倍数的数字,返回“ FizzBuzz”。对于两个,三个和四个的倍数的数字,返回“ FizzBuzzBang”
$folder.items | Select-Object -Property Subject, ReceivedTime, Importance, SenderName, body
答案 0 :(得分:2)
好的。您甚至可以拥有适用于任何此类游戏的通用解决方案
def game(rules, i):
return ''.join(word for divisor, word in rules if not i%divisor) or i # Possibly str(i)
_fizzbuzzbang_rules = sorted({2: "Fizz", 3: "Buzz", 4: "Bang"}.items())
def fizzbuzzbang(i):
return game(_fizzbuzzbang_rules, i) # You could also use partial
# fizzbuzzbang = partial(game, _fizzbuzzbang_rules)
一些例子:
>>> fizzbuzzbang(2)
'Fizz'
>>> fizzbuzzbang(3)
'Buzz'
>>> fizzbuzzbang(5)
5
>>> fizzbuzzbang(12)
'FizzBuzzBang'
答案 1 :(得分:0)
我不知道这是否更优雅,但它更具可读性和效率。
def fizz_buzz_bang(i):
fizz = not i % 2
buzz = not i % 3
bang = not i % 4
if fizz:
if buzz:
if bang:
return 'FizzBuzzBang'
return 'FizzBuzz'
return 'Fizz' if not bang else 'Bang'
if buzz:
return 'Buzz'
return i
编辑:实际上,这可能是最简单的方法...
def fizz_buzz_bang(i):
if not i % 12:
return 'FizzBuzzBang'
if not i % 6:
return 'FizzBuzz'
if not i % 4:
return 'Bang'
if not i % 3:
return 'Buzz'
if not i % 2:
return 'Fizz'
return i
答案 2 :(得分:0)
您可以使用以下代码:
def fizz_buzz_bang(i):
x="Fizz"
y="Buzz"
z="Bang"
x1 = 2 if i%2 == 0 else 1
y1 = 3 if i%3 == 0 else 1
z1 = 4 if i%4 == 0 else 1
a = x1*y1*z1
return {
2 : x,
3 : y,
4 : z,
6 : x+y,
8 : x+z,
12: y+z,
24: x+y+z
}.get(a, i)
这只是一个映射,可根据逻辑将数字相乘并根据相乘结果返回所需的单词
答案 3 :(得分:0)
如果我们不手动进行LCM计算,那该怎么办
Length
def fizz_buzz_bang(i, a, b, c): x = 'Fizz' y = 'Buzz' z = 'Bang' if not i % b * c: return x + y + z elif not i % a * b: return x + y elif not i % c : return z elif not i % b: return y elif not i % a: return x fizz_buzz_bang(12, 2, 3, 4)