지난 번에 배온 내용들로 문제#8 Slot Machine을 해결했는데, 이번에는 다른 방식으로 해결해 보려고 한다.
이전에 정수와 부동소수점에 대해서 배운 기억이 나지? 그때 나눗셈의 나머지를 계산하는 Mod 연산자(%)에 대해서 이야기한 기억이 날거야. 혹시 안난다면 다시 정리해 보도록 하고.
여하튼 % 연산자를 이용하면 나머지를 보여주는 건데, 여기에도 규칙(패턴)이 있다.
예제와 같이 나누어지는 수보다 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버전부터 추가된 것이라고 한다.
'Python 배우기' 카테고리의 다른 글
[외계어 배우기] 반복문: 무한 루프(문제#8 Slot Machines) (0) | 2024.03.04 |
---|---|
[외계어 배우기] 반복문(문제#7 Data Plan) (1) | 2024.02.27 |
[외계어 배우기] 반복문(문제#6 Occupied Spaces) (0) | 2024.02.26 |
[외계어 배우기] 연습문제 (1) | 2024.02.24 |
[외계어 배우기] 문제#5 Three Cups (0) | 2024.02.22 |