goodthings4me.tistory.com
진수 변환 코드 - 파이썬에서 진수를 어떻게 계산하는지 찾아보니 10진수를 2진수, 8진수, 16진수 변환하기 위해서는 bin(), oct(), hex() 함수를 각각 사용한다. 오늘은 이 함수를 가지고 진수를 상호 변환하는 코드를 연습해봤다.
파이썬 진수 변환 : 2진수, 8진수, 10진수, 16진수 상호 간 변환하기
10진수인 경우에는 bin(), oct(), hex() 함수의 매개변수로 대입해주면 바로 각각의 진수 형태로 변환이 되지만 2진수, 8진수, 16진수의 경우는 10진수로 변환 후에 각각의 진수에 대입하는 방법으로 진수 변환을 했다.
[파이썬 소스 코드]
def antilogarithm_convert():
ex = {'2':'0b', '8':'0o', '10':'양수', '16':'0x'}
antilog = ''
while antilog not in ('2', '8', '10', '16'):
antilog = input('\n입력할 진수 선택\n(2, 8, 10, 16 중 1개 입력): ')
for i in range(3):
try:
res = input(f'\n{antilog}진수는 "{ex[antilog]}"로 시작: ')
print(f'\n입력한 {antilog}진수 "{res}"에 대해...')
if antilog == '2':
print('8진수:', oct(int(res, 2)))
print('10진수:', int(res, 2))
print('16진수:', hex(int(res, 2)))
if antilog == '8':
print('2진수:', bin(int(res, 8)))
print('10진수:', int(res, 8))
print('16진수:', hex(int(res, 8)))
if antilog == '10':
print('2진수:', bin(int(res)))
print('8진수:', oct(int(res)))
print('16진수:', hex(int(res)))
if antilog == '16':
print('2진수:', bin(int(res, 16)))
print('8진수:', oct(int(res, 16)))
print('10진수:', int(res, 16))
break
except:
print('잘 못 입력했네요!')
antilogarithm_convert()
- 오입력 에러 처리를 위해서 '입력할 진수 선택' 시 2, 8, 10, 16 이외의 숫자를 입력할 경우 while 반복문으로 다시 입력하도록 했고,
- 진수를 잘 못 입력한 경우에는 for 문으로 2회 더 입력할 기회를 주었다.
[실행 결과]
입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 10
10진수는 "양수"로 시작: 255
입력한 10진수 "255"에 대해...
2진수: 0b11111111
8진수: 0o377
16진수: 0xff
입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 2
2진수는 "0b"로 시작: 0b11111011
입력한 2진수 "0b11111011"에 대해...
8진수: 0o373
10진수: 251
16진수: 0xfb
입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 8
8진수는 "0o"로 시작: 0o342
입력한 8진수 "0o342"에 대해...
2진수: 0b11100010
10진수: 226
16진수: 0xe2
입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 16
16진수는 "0x"로 시작: 0xff9a
입력한 16진수 "0xff9a"에 대해...
2진수: 0b1111111110011010
8진수: 0o177632
10진수: 65434
###############################
# 입력 에러 처리는
입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 3
입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): a
입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 2
2진수는 "0b"로 시작: ob1111
입력한 2진수 "ob1111"에 대해...
잘 못 입력했네요!
2진수는 "0b"로 시작: 0b2222
입력한 2진수 "0b2222"에 대해...
잘 못 입력했네요!
2진수는 "0b"로 시작: 0b1212
입력한 2진수 "0b1212"에 대해...
잘 못 입력했네요!
※ 위 코드를 파이썬 Tkinter 모듈과 함께 만든 '진수 변환기' 프로그램 다운로드
'코딩 연습 > 파이썬 기초(예제)' 카테고리의 다른 글
파이썬 while문 isdecimal(), isdigit(), isnumeric() 활용하기 (0) | 2022.05.04 |
---|---|
구구단 게임 [파이썬기초예제] (0) | 2022.04.28 |
가위바위보 게임 [파이썬기초예제] (0) | 2022.04.21 |
bmi 계산하기 - 한국인의 체질량 지수 계산 [파이썬기초예제] (0) | 2022.04.20 |
북마크 관리 프로그램 코딩, 엑셀 생성 관리 [파이썬기초(예제)] (0) | 2022.04.17 |
댓글