From 0a6dff6b1a63cfb0f75578b78381f43618c0e502 Mon Sep 17 00:00:00 2001 From: mohammadreza490 <47437328+mohammadreza490@users.noreply.github.com> Date: Sun, 6 Sep 2020 01:52:53 +0100 Subject: [PATCH 1/5] Create binary_to_decimal binary to decimal converter --- conversions/binary_to_decimal | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 conversions/binary_to_decimal diff --git a/conversions/binary_to_decimal b/conversions/binary_to_decimal new file mode 100644 index 000000000000..3573895e9ef1 --- /dev/null +++ b/conversions/binary_to_decimal @@ -0,0 +1,38 @@ +def bin_to_decimal(bin_string: str) -> int: + """ + Convert a binary value to its decimal equivalent + + >>> bin_to_decimal("101") + 5 + >>> bin_to_decimal(" 1010 ") + 10 + >>> bin_to_decimal("-11101") + -29 + >>> bin_to_decimal("a") + ValueError: Non-binary value was passed to the function + >>> bin_to_decimal("") + ValueError: Empty string value was passed to the function + >>> bin_to_decimal("39") + ValueError: Non-binary value was passed to the function + """ + bin_string = bin_string.strip() + if not bin_string: + raise ValueError("Empty string was passed to the function") + is_negative = bin_string[0] == "-" + if is_negative: + bin_string = bin_string[1:] + if not all(0 <= int(char) <= 1 for char in bin_string): + raise ValueError("Non-binary value was passed to the function") + decimal_number = 0 + for char in bin_string: + decimal_number = 2 * decimal_number + int(char) + print(decimal_number, char) + if is_negative: + decimal_number = -decimal_number + return decimal_number + + +if __name__ == "__main__": + from doctest import testmod + + testmod() From 7da5d1a9d3dcbbe15e0068a576b8139dcd6728c8 Mon Sep 17 00:00:00 2001 From: mohammadreza490 <47437328+mohammadreza490@users.noreply.github.com> Date: Sun, 6 Sep 2020 10:55:45 +0100 Subject: [PATCH 2/5] Update conversions/binary_to_decimal Co-authored-by: Christian Clauss --- conversions/binary_to_decimal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conversions/binary_to_decimal b/conversions/binary_to_decimal index 3573895e9ef1..2b75534f50d3 100644 --- a/conversions/binary_to_decimal +++ b/conversions/binary_to_decimal @@ -15,7 +15,7 @@ def bin_to_decimal(bin_string: str) -> int: >>> bin_to_decimal("39") ValueError: Non-binary value was passed to the function """ - bin_string = bin_string.strip() + bin_string = str(bin_string).strip() if not bin_string: raise ValueError("Empty string was passed to the function") is_negative = bin_string[0] == "-" From 6dc56f66c21afa6532ff72dbbdbc404a7324c486 Mon Sep 17 00:00:00 2001 From: mohammadreza490 <47437328+mohammadreza490@users.noreply.github.com> Date: Sun, 6 Sep 2020 10:57:26 +0100 Subject: [PATCH 3/5] Update binary_to_decimal --- conversions/binary_to_decimal | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conversions/binary_to_decimal b/conversions/binary_to_decimal index 2b75534f50d3..dc2336e93ad6 100644 --- a/conversions/binary_to_decimal +++ b/conversions/binary_to_decimal @@ -8,6 +8,8 @@ def bin_to_decimal(bin_string: str) -> int: 10 >>> bin_to_decimal("-11101") -29 + >>> bin_to_decimal("0") + 0 >>> bin_to_decimal("a") ValueError: Non-binary value was passed to the function >>> bin_to_decimal("") From ce694fcb8cc40c1892dbaca278e0798adf30cc11 Mon Sep 17 00:00:00 2001 From: mohammadreza490 <47437328+mohammadreza490@users.noreply.github.com> Date: Mon, 7 Sep 2020 08:42:18 +0100 Subject: [PATCH 4/5] Update conversions/binary_to_decimal Co-authored-by: Christian Clauss --- conversions/binary_to_decimal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conversions/binary_to_decimal b/conversions/binary_to_decimal index dc2336e93ad6..e0b3ce7cb9ff 100644 --- a/conversions/binary_to_decimal +++ b/conversions/binary_to_decimal @@ -23,7 +23,7 @@ def bin_to_decimal(bin_string: str) -> int: is_negative = bin_string[0] == "-" if is_negative: bin_string = bin_string[1:] - if not all(0 <= int(char) <= 1 for char in bin_string): + if not all(char in "01" for char in bin_string): raise ValueError("Non-binary value was passed to the function") decimal_number = 0 for char in bin_string: From f2f3069d0689f1ce173a7a25e89a38cb8c401240 Mon Sep 17 00:00:00 2001 From: mohammadreza490 <47437328+mohammadreza490@users.noreply.github.com> Date: Mon, 7 Sep 2020 08:42:57 +0100 Subject: [PATCH 5/5] Update binary_to_decimal --- conversions/binary_to_decimal | 1 - 1 file changed, 1 deletion(-) diff --git a/conversions/binary_to_decimal b/conversions/binary_to_decimal index e0b3ce7cb9ff..1f223daf825f 100644 --- a/conversions/binary_to_decimal +++ b/conversions/binary_to_decimal @@ -28,7 +28,6 @@ def bin_to_decimal(bin_string: str) -> int: decimal_number = 0 for char in bin_string: decimal_number = 2 * decimal_number + int(char) - print(decimal_number, char) if is_negative: decimal_number = -decimal_number return decimal_number