diff --git a/conversions/binary_to_decimal.py b/conversions/binary_to_decimal.py index 914a9318c225..1cd150b02eae 100644 --- a/conversions/binary_to_decimal.py +++ b/conversions/binary_to_decimal.py @@ -1,6 +1,6 @@ def bin_to_decimal(bin_string: str) -> int: """ - Convert a binary value to its decimal equivalent + Convert a binary value to its decimal equivalent. >>> bin_to_decimal("101") 5 @@ -24,17 +24,19 @@ def bin_to_decimal(bin_string: str) -> int: ValueError: Non-binary value was passed to the function """ bin_string = str(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(char in "01" for char in bin_string): + + if not bin_string or 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: - decimal_number = 2 * decimal_number + int(char) - return -decimal_number if is_negative else decimal_number + + result = int(bin_string, 2) + return -result if is_negative else result if __name__ == "__main__":