이렇게 스펠링 하나씩 나온다 이걸 새로운 변수에 더해주고 if문으로 딕셔너리 안에 새로운 변수가 있는지를 물어야겠다
en_num = 0
for num in numbers:
en_num += num
# 출력화면
# TypeError: unsupported operand type(s) for +=: 'int' and 'str'
en_num을 정수형으로 선언하니 타입에러가 뜬다
일단 num이 문자열이므로 en_num로 문자로 선언한다
en_num = ""
for num in numbers:
en_num += num
if en_num in en_to_num:
for문이 2번 돈 상태라면 en_num에는 "on"이 담겨있어서 en_to_num이라는 딕셔너리 안에 없어서 if문을 통과하지 못한다
3번째에는 en_num="one"이 되어서 if문을 통과한다
이제 en_num에 담긴 "one"을 1로 바꾸자
en_num = en_num.replace(en_num, en_to_num[en_num])
# 출력화면
# en_num = en_num.replace(en_num, en_to_num[en_num])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# TypeError: replace() argument 2 must be str, not int
if문 아래를 이렇게 짰더니 타입에러가 나온다...ㅎㅎ....
딕셔너리의 value 값이 정수형으로 되어 있어서 그런 거 같다 큰따옴표를 붙여주겠다
en_to_num = {
"zero":"0",
"one":"1",
"two":"2",
"three":"3",
"four":"4",
"five":"5",
"six":"6",
"seven":"7",
"eight":"8",
"nine":"9",
}
en_num = ""
for num in numbers:
en_num += num
if en_num in en_to_num:
en_num = en_num.replace(en_num, en_to_num[en_num])
print(en_num)
이렇게 하고 print문을 찍어보니 1 하나 나온다...왜 for문이 안 도는 거지
아!!!! en_num이 1이 되고 다음 for문이 쭉쭉 돌면 1four가 돼서 1때문에 if문을 통과할 일이 안 생기는 거구나
for num in numbers:
en_num += num
print(en_num)
if en_num in en_to_num:
en_num = en_num.replace(en_num, en_to_num[en_num])
print(en_num)
이렇게 2군데 print문 찍어보니까 가관이다 ㅋㅋㅋ
o
on
one
1
1f
1fo
1fou
1four
1fourz
1fourze
1fourzer
1fourzero
1fourzeros
1fourzerosi
1fourzerosix
1fourzerosixs
1fourzerosixse
1fourzerosixsev
1fourzerosixseve
1fourzerosixseven
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
answer라는 변수에 1을 담도록 하자...!
answer, en_num = "", ""
for num in numbers:
en_num += num
if en_num in en_to_num:
answer = en_num.replace(en_num, en_to_num[en_num])
return answer
print(solution("onefourzerosixseven"))
또 1만 나온다 또 뭔가 문제가 있군
...
if en_num in en_to_num:
answer = en_num.replace(en_num, en_to_num[en_num])
print(en_num)
print(answer)
return answer
print(solution("onefourzerosixseven"))
# 출력화면
# one
# 1
# 1