프로젝트들/Python_Udemy
[Python]9 - 이진수 (Binary) & 십진수 (Decimal) 컨버터
코곰
2020. 12. 8. 22:34
이진수 -> 십진수, 십진수 -> 이진수 컨버터를 구현해보자.
파이썬 구현
import re
# Get the Conversion System and Number to Convert
system = input("Choose between [1: Binary -> Decimal, 2: Decimal -> Binary] ")
number = input("Enter your number: ")
def binary_to_decimal(number):
# regular expression to validate the number
if len(re.findall('[^01]',number)) != 0:
print('Enter a valid binary number')
return
i = converted = 0
number = int(number)
while number != 0:
converted += number % 10 * 2**i
number = number // 10
i += 1
return converted
def decimal_to_binary(number):
# regular expression to validate the number
if len(re.findall('[^\d]',number)) != 0:
print('Enter a valid decimal number')
return
converted = ''
number = int(number)
if number in (0,1):
return number
while number != 0:
converted += str(number % 2)
number = number // 2
return int(converted[::-1])
if system == '1':
print(binary_to_decimal(number))
if system == '2':
print(decimal_to_binary(number))
접근법
- 2진수 -> 10진수: 2^n을 각 자릿수에 더하면 되니 숫자로 접근하였다.
- 10진수 -> 2진수: 2로 나눈 나머지를 뒤에서부터 저장하려니, 리스트로 접근하였다. 다만 string -> number -> string -> number 의 변환을 거치려니 마음에 안 든다. ㅜ
- 2진수와 10진수의 형식에 맞는 숫자를 입력받았는 지 확인하기 위해 regular expression을 사용하였다.
Udemy가 추천한 방법
github.com/Drhealsgood/miniprojects/blob/master/number_projects/conversion/conversions.py
Drhealsgood/miniprojects
Contribute to Drhealsgood/miniprojects development by creating an account on GitHub.
github.com
- decimal <-> binary 컨버터 이외에도 몇 가지 컨버터가 있어 좀 복잡하다. 하지만 전체적인 로직은 내 것과 비슷해 보여 뭔가 안심(?)이 되었다. 엄청 이상하게 한 건 아니구나...ㅎㅎ