如何让我的python二进制转换器通过这些测试

时间:2016-09-22 21:46:20

标签: python

我的python代码应该将0到255之间的十进制数作为参数并将它们转换为二进制,当参数小于0或大于255时返回无效

def binary_converter(x):

  if (x < 0) or (x > 255):

      return "invalid input"

  try:
      return int(bin(x)[2:]

  except ValueError:
      pass

测试

import unittest

class BinaryConverterTestCases(unittest.TestCase):

    def test_conversion_one(self):
    result = binary_converter(0)
    self.assertEqual(result, '0', msg='Invalid conversion')

    def test_conversion_two(self):
    result = binary_converter(62)
    self.assertEqual(result, '111110', msg='Invalid conversion')

    def test_no_negative_numbers(self):
    result = binary_converter(-1)
    self.assertEqual(result, 'Invalid input', msg='Input below 0 not allowed')

    def test_no_numbers_above_255(self):
    result = binary_converter(300)
    self.assertEqual(result, 'Invalid input', msg='Input above 255 not allowed')

2 个答案:

答案 0 :(得分:0)

您已经知道如何检查输入参数的范围以及如何返回值。现在返回分配所需的内容很简单。

在检查有效输入时,您错过的只是将“无效”大写。

对于合法转换,您只需要传回二进制表示而不使用前导“0b”,这几乎已经完成(删除整数转换,正如两位评论者已经注意到的那样)。

答案 1 :(得分:0)

所以这是最终的工作代码

def binary_converter(x):

  if (x < 0) or (x > 255):

      return "Invalid input"

  try:
      return (bin(x)[2:])

  except ValueError:
      pass