每天开心一点

Python: 每日一题 41

2017-11-27 13:27:00    六月    805    来源: http://bbs.fishc.com/thread-86956-1-1.html

计算机病毒爆发了,把我们的二进制世界给弄混乱了。
新的二进制规律是这样的,从右往左数的单位数仍然和过去一样,双数位均变成了负数。(看看你们幸福的,我把最难的理解题意这件事帮你们做了。)
为此,我给各位计算了5个字符的的新二进制表给大家参考。

好了,现在需要你做的事,给出两个函数分别为
1、int_to_negabinary(i)  将10进制数转为新的二进制值。  例如: int_to_negabinary(6) --> '11010'
2、negabinary_to_int(s) 将新的二进制值转为10进制数。  例如: negabinary_to_int('11010')  --> 6
请注意返回值的类型。
并请注意,不要用单纯的建立一个字典的方式去解决问题,虽然我最后给出的测试代码中只要6。但是请你们考虑,如果是大数时应该怎样计算的问题。

测试代码如下,test.py请至33,34题中复制:

  1. test.assert_equals(int_to_negabinary(6), '11010')
  2. test.assert_equals(int_to_negabinary(-6), '1110')
  3. test.assert_equals(negabinary_to_int('11010'), 6)
  4. test.assert_equals(negabinary_to_int('1110'), -6)