二进制转换器alogrithim

时间:2016-09-21 05:44:35

标签: python

创建一个名为binary_converter的函数。在函数内部,实现一个算法,将0到255之间的十进制数转换为二进制数。

对于任何无效输入,返回字符串无效输入

示例:对于数字5返回字符串101

我的代码

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')

代码有错误,我是编程新手,实际上是家庭学习

编辑 代码

def binary_converter(n):
    if(n==0):
        return "0"
    elif(n>255):
        print("out of range")
        return ""
    else:
        ans=""
        while(n>0):
            temp=n%2
            ans=str(temp)+ans
            n=n/2
        return ans

错误报告

您的代码中存在错误/错误

  

结果:{"已完成":正确,"成功":[{" fullName":   " test_conversion_one","传递规范编号":1},{" fullName":   " test_conversion_two","传递规范号码":2}],"传递":false,   "开始":真实,"失败":[{" failedSpecNumber":1," fullName":   " test_no_negative_numbers"," failedExpectations":[{" message":   "第19行中的失败,在test_no_negative_numbers \ n中   self.assertEqual(结果,'输入无效',msg ='输入低于0不   允许')\ n AssertionError:输入低于0不允许\ n"}]},   {" failedSpecNumber":2," fullName":" test_no_numbers_above_255",   " failedExpectations":[{" message":"第23行失败,在   test_no_numbers_above_255 \ n self.assertEqual(结果,'无效   输入',msg ='高于255的输入不允许')\ nAssertationError:输入   不允许超过255 \ n"}]}],"规格":{"计数":4," pendingCount":0,   "时间":" 0.000112"}}超出范围

2 个答案:

答案 0 :(得分:0)

试试这段代码......

def binary_converter(n):
    if(n==0):
        return "0"
    elif(n>255):
        print("out of range")
        return ""
    else:
        ans=""
        while(n>0):
            temp=n%2
            ans=str(temp)+ans
            n=n/2
        return ans

答案 1 :(得分:0)

这很有效。提示:始终按照给出的测试来解决这个问题。

def binary_converter(n):
    if(n==0):
        return "0"
    elif(n<0):
        return "Invalid input"
    elif(n>255):
        return "Invalid input"
    else:
        ans=""
        while(n>0):
            temp=n%2
            ans=str(temp)+ans
            n=n/2
        return ans