首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的Fizzbuzz

Python中的Fizzbuzz
EN

Code Review用户
提问于 2015-02-17 18:05:58
回答 1查看 468关注 0票数 5

我是Python新手,我想知道用下面的超级新手程序可以改进什么-在解决方案和代码风格等方面。

test_fizzbuzz.py

代码语言:javascript
运行
复制
import unittest
import fizzbuzz


class TestFizzbuzzFunctions(unittest.TestCase):

    def test_it_converts_multiples_of_three_to_fizz(self):
        self.assertEqual(fizzbuzz.process_number(6), 'fizz')

    def test_it_converts_multiples_of_five_to_buzz(self):
        self.assertEqual(fizzbuzz.process_number(10), 'buzz')

    def test_it_converts_multiples_of_three_and_five_to_fizzbuzz(self):
        self.assertEqual(fizzbuzz.process_number(15), 'fizzbuzz')

    def test_it_does_not_convert_numbers_that_are_not_multiples_of_three_or_five(self):
        self.assertEqual(fizzbuzz.process_number(11), 11)

if __name__ == '__main__':
    unittest.main()

fizzbuzz.py

代码语言:javascript
运行
复制
def process_number(number):
    result = ''
    if number % 3 == 0:
        result += 'fizz'
    if number % 5 == 0:
        result += 'buzz'

    return result or number
EN

回答 1

Code Review用户

发布于 2015-02-17 18:23:43

这似乎不是一个真正的FizzBuzz程序。一个FizzBuzz程序,根据标签wiki,遍历数字1-100,并根据您的规则打印值。

你做得对的一件事是:

代码语言:javascript
运行
复制
if __name__ == '__main__':

许多初学者做不到这一点。此外,您还使用了snake_case,这也是Python的标准。

我觉得有点难以理解的一件事是:

代码语言:javascript
运行
复制
return result or number

这不会在许多语言中编译,而且它还允许该方法有两种返回类型-- stringint。我会调整它以使用if语句并将数字转换为字符串:

代码语言:javascript
运行
复制
if result != '':
    return result

return str(number)

这样,方法总是返回一个字符串。

因为这只是FizzBuzz,所以如果要创建第二个处理它的方法,我只需要在函数中打印,那么您就不需要担心返回类型:

代码语言:javascript
运行
复制
def process_number(number):
    result = ''
    if number % 3 == 0:
        result += 'fizz'
    if number % 5 == 0:
        result += 'buzz'

    if result != '':
        print(result)
    else:
        print(number)
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/81765

复制
相关文章

相似问题

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