일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Database
- 머신러닝(딥러닝)
- 생활코딩
- 연산자
- Python
- JavaScript
- 개발자
- flatten
- 데이터베이스
- MySQL
- tensorflow
- pandas
- 야학
- 머신러닝야학
- reshape
- LeNet
- 이것이 자바다
- 데이터베이스 개론
- 생활코딩 데이터베이스
- Java
- 머신러닝
- CNN
- 파이썬
- 카카오클라우드스쿨2기
- 딥러닝
- 데이터베이서
- 판다스
- 생활코딩 머신러닝야학
- Today
- Total
IT's 우
파이썬 자료구조와 알고리즘_진법 변환 본문
- 다른 진법의 숫자를 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()
출처: 파이썬 자료구조와 알고리즘, 미아 스타인 지음 최길우 옮김
'알고리즘 > 파이썬 알고리즘' 카테고리의 다른 글
파이썬 자료구조와 알고리즘_소수 (0) | 2021.03.14 |
---|---|
파이썬 자료구조와 알고리즘_피보나치 수열 (0) | 2021.03.13 |
파이썬 자료구조와 알고리즘_random 모듈 (0) | 2021.03.13 |
파이썬 자료구조와 알고리즘_최대공약수 (0) | 2021.03.13 |
파이썬 자료구조와 알고리즘_fraction 모듈 (2) | 2021.03.12 |