본문 바로가기
Python/왕초보를 위한 파이썬

4.6. 스페인어로 숫자 읽기(2)

by 가므자 2012. 4. 4.

스페인어로 숫자 읽기 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)

단어를 외우기는 힘들지만 규칙만 따져보면 의외로 간단해요. 정해진 단어는 그대로 읽고, 그 외에는 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

댓글