首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fizz,Buzz,FizzBuzz问题需要简写的Pythonic解答

Fizz,Buzz,FizzBuzz问题需要简写的Pythonic解答
EN

Stack Overflow用户
提问于 2019-04-23 11:42:45
回答 3查看 526关注 0票数 3

为了清除python中的lambda、map & list的概念,我尝试使用lambda在一行中实现这个解决方案,而不是将函数"rs“作为映射函数内部的param,如下面的代码所示。

代码语言:javascript
复制
#Print Fizz, Buzz and FizzBuzz
def rs( n ):
  if ( n % 3 == 0 and n % 5 == 0 ):
    return "FizzBuzz"
  elif ( n % 3 == 0 ):
    return "Fizz"
  elif ( n % 5 == 0 ):
    return "Buzz"
  else:
    return n

print (list( map ( rs , [ i for i in range( 1,100 ) ] ) ) )
代码语言:javascript
复制
[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz', 16, 17, 'Fizz', 19, 'Buzz', 'Fizz', 22, 23, 'Fizz', 'Buzz', 26, 'Fizz', 28, 29, 'FizzBuzz', 31, 32, 'Fizz', 34, 'Buzz', 'Fizz', 37, 38, 'Fizz', 'Buzz', 41, 'Fizz', 43, 44, 'FizzBuzz', 46, 47, 'Fizz', 49, 'Buzz', 'Fizz', 52, 53, 'Fizz', 'Buzz', 56, 'Fizz', 58, 59, 'FizzBuzz', 61, 62, 'Fizz', 64, 'Buzz', 'Fizz', 67, 68, 'Fizz', 'Buzz', 71, 'Fizz', 73, 74, 'FizzBuzz', 76, 77, 'Fizz', 79, 'Buzz', 'Fizz', 82, 83, 'Fizz', 'Buzz', 86, 'Fizz', 88, 89, 'FizzBuzz', 91, 92, 'Fizz', 94, 'Buzz', 'Fizz', 97, 98, 'Fizz']

这方面的任何帮助都是受欢迎的。最好的!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-23 11:47:53

不需要一个lambda函数,一个列表理解就足够了。

代码语言:javascript
复制
li = ['FizzBuzz' if i%15 == 0 else 'Fizz' if i%3 == 0 else 'Buzz' if i%5 == 0  else i for i in range(1, 100)]

输出将是

代码语言:javascript
复制
[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14,
 'FizzBuzz', 16, 17, 'Fizz', 19, 'Buzz', 'Fizz', 22, 23, 'Fizz', 'Buzz', 26, 
'Fizz', 28, 29, 'FizzBuzz', 31, 32, 'Fizz', 34, 'Buzz', 'Fizz', 37, 38, 
'Fizz', 'Buzz', 41, 'Fizz', 43, 44, 'FizzBuzz', 46, 47, 'Fizz', 49, 'Buzz', 
'Fizz', 52, 53, 'Fizz', 'Buzz', 56, 'Fizz', 58, 59, 'FizzBuzz', 61, 62, 
'Fizz', 64, 'Buzz', 'Fizz', 67, 68, 'Fizz', 'Buzz', 71, 'Fizz', 73, 74, 
'FizzBuzz', 76, 77, 'Fizz', 79, 'Buzz', 'Fizz', 82, 83, 'Fizz', 'Buzz', 86, 
'Fizz', 88, 89, 'FizzBuzz', 91, 92, 'Fizz', 94, 'Buzz', 'Fizz', 97, 98, 
'Fizz']

另外,lambda函数将如下所示,并给出相同的答案!

代码语言:javascript
复制
rs = lambda i: 'FizzBuzz' if i%15 == 0 else 'Fizz' if i%3 == 0 else 'Buzz' if i%5 == 0  else i
print (list( map ( rs , [ i for i in range( 1,100 ) ] ) ) )

或者是一条单线

代码语言:javascript
复制
print (list( map ( lambda i: 'FizzBuzz' if i%15 == 0 else 'Fizz' if i%3 == 0 else 'Buzz' if i%5 == 0  else i , [ i for i in range( 1,100 ) ] ) ) )
票数 3
EN

Stack Overflow用户

发布于 2019-04-23 11:49:15

代码语言:javascript
复制
for x in range(1, 100):
    print(((x % 3 == 0) * 'Fizz' + (x % 5 == 0) * 'Buzz') or x)
票数 7
EN

Stack Overflow用户

发布于 2019-04-23 11:57:02

替换为lambda函数,如下所示

代码语言:javascript
复制
print (list( map ( lambda n:"FizzBuzz" if n % 3 == 0 and n % 5 == 0 else "Fizz" if n % 3 == 0 else "Buzz" if n % 5 == 0 else n  , [ i for i in range( 1,100 ) ] ) ) )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55810455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档