IT's 우

파이썬 자료구조와 알고리즘_진법 변환 본문

알고리즘/파이썬 알고리즘

파이썬 자료구조와 알고리즘_진법 변환

디우 2021. 3. 13. 01:06
728x90

- 다른 진법의 숫자를 10진수로 변환한다.(2 <= base <= 10)

 

 

# convert_to_decimal in page 27

 

def convert_to_decimal(number, base):
multiplier, result = 1, 0
while number >0:
result += number % 10 * multiplier
multiplier *= base
number = number // 10
return result

 

def test_convert_to_decimal():

""" 2진수 1001 """
number, base = 1001, 2

""" 2진수 1001을 10진수로 변환하여 확인하기 """
assert(convert_to_decimal(number, base) == 9)
print("테스트 통과!")

if __name__ == "__main__":
test_convert_to_decimal()

 

 

 

 

 

 

 

-10진수를 다른 진법의 숫자로 변환(2 <= base <= 10)

 

#convert_from_decimal

def convert_from_decimal(number, base):
multiplier, result = 1, 0
while number > 0:
result += number % base*multiplier
multiplier *= 10
number = number // base
return result

 

def test_convert_from_decimal():

""" 10진수 9를 2진수로 변환하기 """
number, base = 9, 2
assert(convert_from_decimal(number, base) == 1001)
print("테스트 통과!")

if __name__ == "__main__":
test_convert_from_decimal()

 

 

 

 

-10진법 숫자를 20이하의 진법으로 변환

 

# convert_from_decimal_larger_bases


def convert_from_decimal_larger_bases(number, base):
"""20진법 처리"""
strings = "0123456789ABCDEFGHIJ"
result =""
while number > 0:
digit = number % base
result = strings[digit] + result
number = number // base
return result

 

def test_convert_from_decimal_larger_base():
number, base = 31, 16
assert(convert_from_decimal_larger_bases(number,base) == "1F")
print("테스트 통과!")

if __name__ =="__main__":
test_convert_from_decimal_larger_base()

 

 

 

 

- 재귀 함수(recursive function)를 사용한 진법 변환

#convert_dec_to_any_base_rec

 

def convert_dec_to_any_base_rec(number, base):
"""16진법 처리"""
convertString = "0123456789ABCDEF"
if number < base:
return convertString(number)
else:
return convert_dec_to_any_base_rec(number//base, base)\
+convertString[number % base]

 

def test_convert_dec_to_any_base_rec():
number = 9
base = 2
assert(convert_dec_to_any_base_rec(number, base)=="1001")
print("테스트 통과")

if __name__ =="__main":
test_convert_dec_to_any_base_rec()

 

 

출처: 파이썬 자료구조와 알고리즘, 미아 스타인 지음 최길우 옮김

728x90
반응형