我是Python新手,我想知道用下面的超级新手程序可以改进什么-在解决方案和代码风格等方面。
test_fizzbuzz.py
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
def process_number(number):
result = ''
if number % 3 == 0:
result += 'fizz'
if number % 5 == 0:
result += 'buzz'
return result or number发布于 2015-02-17 18:23:43
这似乎不是一个真正的FizzBuzz程序。一个FizzBuzz程序,根据标签wiki,遍历数字1-100,并根据您的规则打印值。
你做得对的一件事是:
if __name__ == '__main__':许多初学者做不到这一点。此外,您还使用了snake_case,这也是Python的标准。
我觉得有点难以理解的一件事是:
return result or number这不会在许多语言中编译,而且它还允许该方法有两种返回类型-- string和int。我会调整它以使用if语句并将数字转换为字符串:
if result != '':
return result
return str(number)这样,方法总是返回一个字符串。
因为这只是FizzBuzz,所以如果要创建第二个处理它的方法,我只需要在函数中打印,那么您就不需要担心返回类型:
def process_number(number):
result = ''
if number % 3 == 0:
result += 'fizz'
if number % 5 == 0:
result += 'buzz'
if result != '':
print(result)
else:
print(number)https://codereview.stackexchange.com/questions/81765
复制相似问题