mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
bin(num). convert ZERO and negative decimal numbers to binary. (#1093)
* bin(num) can convert ZERO and negative decimal numbers to binary. Consistent with built-in python bin(x) function. * bin(num) can convert ZERO and negative decimal numbers to binary. Consistent with built-in python bin(x) function. * Added doctests. bin(num) can convert ZERO and negative decimal numbers to binary. Consistent with built-in python bin(x) function. * Added doctests. bin(num) can convert ZERO and negative decimal numbers to binary. Consistent with built-in python bin(x) function. * Added doctests. bin(num) can convert ZERO and negative decimal numbers to binary. Consistent with built-in python bin(x) function. * doctests still failing. * Doctests added.
This commit is contained in:
parent
9c0cbe3307
commit
e313141904
|
@ -2,24 +2,57 @@
|
|||
|
||||
|
||||
def decimal_to_binary(num):
|
||||
"""Convert a Decimal Number to a Binary Number."""
|
||||
|
||||
"""
|
||||
Convert a Integer Decimal Number to a Binary Number as str.
|
||||
>>> decimal_to_binary(0)
|
||||
'0b0'
|
||||
>>> decimal_to_binary(2)
|
||||
'0b10'
|
||||
>>> decimal_to_binary(7)
|
||||
'0b111'
|
||||
>>> decimal_to_binary(35)
|
||||
'0b100011'
|
||||
>>> # negatives work too
|
||||
>>> decimal_to_binary(-2)
|
||||
'-0b10'
|
||||
>>> # other floats will error
|
||||
>>> decimal_to_binary(16.16) # doctest: +ELLIPSIS
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: 'float' object cannot be interpreted as an integer
|
||||
>>> # strings will error as well
|
||||
>>> decimal_to_binary('0xfffff') # doctest: +ELLIPSIS
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: 'str' object cannot be interpreted as an integer
|
||||
"""
|
||||
|
||||
if type(num) == float:
|
||||
raise TypeError("'float' object cannot be interpreted as an integer")
|
||||
if type(num) == str:
|
||||
raise TypeError("'str' object cannot be interpreted as an integer")
|
||||
|
||||
if num == 0:
|
||||
return "0b0"
|
||||
|
||||
negative = False
|
||||
|
||||
if num < 0:
|
||||
negative = True
|
||||
num = -num
|
||||
|
||||
binary = []
|
||||
while num > 0:
|
||||
binary.insert(0, num % 2)
|
||||
num >>= 1
|
||||
return "".join(str(e) for e in binary)
|
||||
|
||||
if negative:
|
||||
return "-0b" + "".join(str(e) for e in binary)
|
||||
|
||||
return "0b" + "".join(str(e) for e in binary)
|
||||
|
||||
|
||||
def main():
|
||||
"""Print binary equivelents of decimal numbers."""
|
||||
print("\n2 in binary is:")
|
||||
print(decimal_to_binary(2)) # = 10
|
||||
print("\n7 in binary is:")
|
||||
print(decimal_to_binary(7)) # = 111
|
||||
print("\n35 in binary is:")
|
||||
print(decimal_to_binary(35)) # = 100011
|
||||
print("\n")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
doctest.testmod()
|
||||
|
|
Loading…
Reference in New Issue
Block a user