mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
062957ef27
* 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>
55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
"""
|
|
* 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()
|