스페인어로 숫자 읽기 2탄이 돌아왔어요~
지난번에는 1부터 5까지 읽을 수 있는 프로그램을 작성해보았는데, 이번에는 100까지 읽을 수 있도록 개선해보려구요. 지난번 강좌를 안 보신 분은 잠깐 보고 오세요.
그럼 프로그램을 짜기 전에, 스페인어로 숫자 읽는 규칙을 잠깐 살펴볼게요. [1]
- 0부터 29까지는 정해진 단어를 그대로 읽는다.
예: 3 (tres), 16(dieciséis), 29(veintinueve) - 30부터 100까지
- 10의 배수는 정해진 단어를 그대로 읽는다.
예: 40(cuarenta), 80(ochenta) - 그 외의 숫자는 10자리 + y + 1자리 숫자로 읽는다.
예: 43(cuarenta y tres), 86(ochenta y seis)
- 10의 배수는 정해진 단어를 그대로 읽는다.
단어를 외우기는 힘들지만 규칙만 따져보면 의외로 간단해요. 정해진 단어는 그대로 읽고, 그 외에는 y 앞뒤로 맞는 단어를 써주면 되거든요.
그래서 코드를 이렇게 짜 보았어요.
# -*- coding: utf-8 -*- number_dict = { 0: 'cero', 1: 'uno', 2: 'dos', 3: 'tres', 4: 'cuatro', 5: 'cinco', 6: 'seis', 7: 'siete', 8: 'ocho', 9: 'nueve', 10: 'diez', 11: 'once', 12: 'doce', 13: 'trece', 14: 'catorce', 15: 'quince', 16: u'dieciséis', 17: 'diecisiete', 18: 'dieciocho', 19: 'diecinueve', 20: 'veinte', 21: 'veintiuno', 22: u'veintidós', 23: u'veintitrés', 24: 'veinticuatro', 25: 'veinticinco', 26: u'veintiséis', 27: 'veintisiete', 28: 'veintiocho', 29: 'veintinueve', 30: 'treinta', 40: 'cuarenta', 50: 'cincuenta', 60: 'sesenta', 70: 'setenta', 80: 'ochenta', 90: 'noventa' } while True: number = int(raw_input('숫자를 입력하세요: ')) if number in number_dict: spanish = number_dict[number] else: n1 = number % 10 n2 = number - n1 spanish = '%s y %s' % (number_dict[n2], number_dict[n1]) print(spanish)
간단하죠? 지난번처럼 if, else로 숫자 하나하나를 판단하도록 만들었으면 코드가 별로 멋있지도 않고, 너무 길어서 읽기도 힘들었을거예요. number_dict라는 사전을 만들었더니 보시는 것처럼 코드가 깔끔해졌어요.
실행시키면 이렇게 됩니다.
혹시나 해서 찾아봤더니 이런 프로젝트도 있네요.
Convert Numbers to Words (Python)
출처 : wikidocs 왕초보를 위한 파이썬
'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글
5.2. 뭉치 가져오기 (0) | 2012.04.04 |
---|---|
5.1. 뭉치 (0) | 2012.04.04 |
4.5. 연습문제 (0) | 2012.04.04 |
4.4. 사전(Dictionaries) (0) | 2012.04.04 |
4.3. 튜플(Tuples) (0) | 2012.04.03 |
댓글