이진수 -> 십진수, 십진수 -> 이진수 컨버터를 구현해보자.
파이썬 구현
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
- decimal <-> binary 컨버터 이외에도 몇 가지 컨버터가 있어 좀 복잡하다. 하지만 전체적인 로직은 내 것과 비슷해 보여 뭔가 안심(?)이 되었다. 엄청 이상하게 한 건 아니구나...ㅎㅎ
'프로젝트들 > Python_Udemy' 카테고리의 다른 글
[Python]15 - Tax Calculator 미국 도시 세금 계산기 (0) | 2020.12.24 |
---|---|
[Python]20 - Coin Flip Simulator 동전 던지기 (0) | 2020.12.22 |
[Python]1 - Find Pi to the Nth Digit, 원주율 N번째 자릿수까지 계산하기 (0) | 2020.12.14 |
[Python]3 - Fibonacci Sequence 피보나치 수열 (0) | 2020.12.08 |
[Python]8 - Change Return 거스름돈 구하기 (0) | 2020.12.02 |
댓글