본문 바로가기

Python 배우기

[외계어 배우기] 반복문: 무한 반복(문제#8 Slot Machine)

지난 번에 배온 내용들로 문제#8 Slot Machine을 해결했는데, 이번에는 다른 방식으로 해결해 보려고 한다.

 

이전에 정수와 부동소수점에 대해서 배운 기억이 나지? 그때 나눗셈의 나머지를 계산하는 Mod 연산자(%)에 대해서 이야기한 기억이 날거야. 혹시 안난다면 다시 정리해 보도록 하고.

 

[외계어 배우기] 정수, 변수(문제#1 WordCount)

지난 시간에 이어 첫 번째로 주어진 문제를 풀기 위해 공부해 보자. 우선, 지난 시간에는 문자열 값에 대해 배운 것을 정리하였고, 이번 시간에는 숫자 값에 대해 배운 것을 정리해 볼 것이다. 파

4programmer.tistory.com

 

여하튼 % 연산자를 이용하면 나머지를 보여주는 건데, 여기에도 규칙(패턴)이 있다. 

예제와 같이 나누어지는 수보다 1적은 수까지의 나머지가 반환된다는 것이다.

 

이 패턴을 우리가 풀고 있는 문제에 적용해보자. 아, 그 전에 코드에서 변수명을 몇 가지 변경했다. 

변경 전 변경 후 변경 전 변경 후
first_machine play_m1 game_plays play_num
second_machine play_m2 machine_number machine_num
third_machine play_m3    
덧, 그리고 지난 번 작성한 코드는 작동시켜보면 에러가 난다. 그 코드 자체로는 문제가 없는데, 우리에게 주어진 문제를 해결하기 위해서는 틀렸다. 무엇 때문인지 한번 생각해 보시라.

 

여기에서 play_num은 플레이한 수를 참조하기 때문에 % 연산자를 적용해서 다음 번 슬롯 머신의 숫자(machine_num)을 알 수 있다. 예를 들면, 다음과 같다.

>>> play_num = 1

>>> play_num % 3

1

 

즉, 1번 슬롯 머신 그러니까 두 번째 슬롯 머신을 플레이할 차례라는 것이다. 또한 이 연산자를 사용하면 다음 플레이에 상금을 지불하는지 여부도 확인할 수 있다. 각 슬롯 머신마다 플레이한 횟수에 따라 상금을 지불하는 규칙이 있고, 각 규칙에 맞는 배수인지만 확인하면 되는 것이다. 예를 들면 다음과 같다.

>>> play_m1 = 35

>>> play_m1 %35

0

 

그럼 이제 % 연산자를 적용해서 코드를 작성해 보자.

 

이 코드가 이해가 가는가? 혹시 잘 이해가 안간다면 내가 하는 방법처럼 코드를 손으로 적으며 하나씩 읽어보자. 읽을 때는 꼭 소리내서 읽자. 학교다닐 때 영어공부할 때가 기억에 날지 모르겠는데, 그때 선생님께서 단어를 외울 때도 꼭 소리내서 읽으며 외우고 책을 읽거나 문장을 읽을 때도 꼭 소리내서 읽어야 한다고 하셨다. 소리내서 읽으면 귀를 통해 들으면서 내 머리속에 더 잘 기억된다는 이점도 있지만, 생각보다 눈으로 봐서 찾지 못하거나 놓쳤던 오류를 더 잘 찾을 수 있고 또한 소리내서 읽으면 무언가 어색한 부분이 느껴진다. 어디가 틀렸는지는 모르겠지만 틀림없이 틀린 것같은 그 느낌적인 느낌이랄까...

 

덧, 내가 작성한 코드에서 출력 부분이 어색할 것이다. 원래 문자열과 숫자의 조합으로 출력을 하려면 숫자 부분은 str이라는 함수를 사용하여 문자열로 바꿔줘야 한다. 이전에 공부했던 것 기억하지? 즉,

'Martha plays ' + str(play_num) + ' times before going broke.'

 

하지만 파이썬에서는 문자열과 숫자를 한꺼번에 출력할 수 있는 마법의 글자(?)가 있었으니, 그것이 바로 f이다. f는 format을 나타내는 f-string(문자열 포매팅)이다. 단, f를 쓸 때 숫자 부분은 {}로 묶어서 쓴다는 걸 기억하자.

덧, f-string은 파이썬 3.6버전부터 추가된 것이라고 한다.

 

반응형