mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
Octal to Binary Convert (#8949)
* Octal to Binary Convert * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * mention return type * code scratch * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * mentioned return type * remove comment * added documention and some test cases * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add another test case * fixes documention * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Documention and test cases added * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * documention problem solved * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * error in exit 1 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Apply suggestions from code review --------- Co-authored-by: BamaCharanChhandogi <b.c.chhandogi@gmailcom> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
This commit is contained in:
parent
5ecb6baef8
commit
062957ef27
54
conversions/octal_to_binary.py
Normal file
54
conversions/octal_to_binary.py
Normal file
|
@ -0,0 +1,54 @@
|
|||
"""
|
||||
* Author: Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi)
|
||||
* Description: Convert a Octal number to Binary.
|
||||
|
||||
References for better understanding:
|
||||
https://en.wikipedia.org/wiki/Binary_number
|
||||
https://en.wikipedia.org/wiki/Octal
|
||||
"""
|
||||
|
||||
|
||||
def octal_to_binary(octal_number: str) -> str:
|
||||
"""
|
||||
Convert an Octal number to Binary.
|
||||
|
||||
>>> octal_to_binary("17")
|
||||
'001111'
|
||||
>>> octal_to_binary("7")
|
||||
'111'
|
||||
>>> octal_to_binary("Av")
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: Non-octal value was passed to the function
|
||||
>>> octal_to_binary("@#")
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: Non-octal value was passed to the function
|
||||
>>> octal_to_binary("")
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: Empty string was passed to the function
|
||||
"""
|
||||
if not octal_number:
|
||||
raise ValueError("Empty string was passed to the function")
|
||||
|
||||
binary_number = ""
|
||||
octal_digits = "01234567"
|
||||
for digit in octal_number:
|
||||
if digit not in octal_digits:
|
||||
raise ValueError("Non-octal value was passed to the function")
|
||||
|
||||
binary_digit = ""
|
||||
value = int(digit)
|
||||
for _ in range(3):
|
||||
binary_digit = str(value % 2) + binary_digit
|
||||
value //= 2
|
||||
binary_number += binary_digit
|
||||
|
||||
return binary_number
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
doctest.testmod()
|
Loading…
Reference in New Issue
Block a user