1. chatGPT에 나온 숫자 게임 소스 코드
# 1 ~ 20 사이의 숫자를 3번의 기회에 맞추는 게임
import random
print("Welcome to the guessing game! You have 3 tries to guess a number between 1 and 20.")
# generate a random number between 1 and 20
number = random.randint(1, 20)
# set the number of tries to 3
tries = 3
while tries > 0:
# ask the user for their guess
guess = int(input("Enter your guess: "))
# check if the guess is correct
if guess == number:
print("Congratulations! You guessed the number.")
break
elif guess < number:
print("Your guess is too low.")
else:
print("Your guess is too high.")
# decrease the number of tries by 1
tries -= 1
# if the user runs out of tries, reveal the correct number
if tries == 0:
print("Sorry, you ran out of tries. The correct number was", number)
2. 코드 분석
- GPT에서 해준 코드 설명
* 먼저 'random' 모듈을 가져와 난수를 생성합니다.
-> C++에서는 #include <random>으로 하는 것을 파이썬에서는 import random이라고 사용한다.
-> 파이썬에서는 import를 통해서 수많은 라이브러리를 편하게 가져다 쓸 수 있는 것이 최고의 장점이라고
생각한다. 예전에 MFC로 코드 작성 시 이미지를 bmp가 아니라 jpg, png 등을 쓸 때 별도의
라이브러리를 가지고 와 적용하여 했었는데 수많은 개발자들이 파이썬의 모듈 또는 라이브러리를
만들어서 올려주기 때문에 내가 사용하려는 모듈만 잘 찾는다면 편하게 사용할 수 있을 것 같다.
* 그런 다음 1에서 20 사이의 난수를 생성하여 number 변수에 할당합니다.
-> 여기서 파이썬의 특징이 변수 선언 시 Type을 선언하지 않아도 된다는 것. 요즘 C++의 auto 선언문과
비슷하다. 아직 변수 선언에 Type이 들어가지 않는 것은 보는 것도 익숙 치 않다.
-> number = random.randint(1, 20) 는 인자로 들어온 1,20 사이의 값 중 random으로 정수 값을 반환하는
함수이다. random 모듈에는 여러가지 멤버 함수들이 존재한다. 여기서 사용된 함수는 정수형만을
뽑아주는 함수이고 여러가지 멤버 함수들을 가지고 있다.
* 기회의 수를 3으로 설정하고 tries 변수에 할당합니다.
* 각 기회를 반복하는 'while' 루프를 시작합니다.
-> while문이 나왔는데 명령문의 끝에는 ' : ' 콜론을 붙여서 끝을 알려주는 것 같다.
' { } ' 들어가지 않는 부분에서는 좀 의아하다. 그럼 과연 while문의 마지막이 어디인지 어떻게 아는 것인가?
Test 해보니 들여쓰기로 구분이 된다.
while문의 시작 부터 들여 쓰기(tab)가 이루어진 문장은 while문에 속하게 되고 while을 벗어나려면
while 명령문과 같은 시작점에서 코드를 작성 하면 된다. 다른 언어에서도 "{ }"만 없을 뿐이지 들여 쓰기는
같은 형식으로 작성이 되지만 들여쓰기로 while문의 끝을 파악한다는 건 아직 너무나 익숙지 않다.
한눈에 들어오질 않는다.
이정도는 C처럼 "{ }" 좀 넣어주지 당황스럽네.
* 루프 내에서 플레이어에게 추측을 입력하고 guess 변수에 저장하도록 요청합니다.
-> guess = int(input("Enter your guess: ")) 입력을 받고 정수형으로 변환 후 guess 변수에 넣어 준다.
C++의 scanf, cin과 유사하다. C++의 두 함수는 입력받길 원하는 Type의 변수를 인자로 넣어서 입력 Type을
정하지만 파이썬은 입력을 받고 그 값을 원하는 Type으로 변환 하는 방식인 거 같다.
파이썬의 입출력은 다른 예제에서 좀 더 살펴 보자
* 일련의 'if' 문을 사용하여 플레이어의 추측과 비밀 번호를 비교합니다. 추측이 맞으면 축하 메시지를 출력하고
루프에서 빠져나옵니다.
추측이 너무 낮으면 플레이어에게 이를 알리는 메시지를 인쇄합니다. 추측이 너무 높으면 플레이어에게
이를 알리는 메시지를 인쇄합니다.
-> if문도 명령문 마지막에 " : " 추가한 후 들여 쓰기로 if문의 범위를 설정한다.
아직까진 계속 어색하다. 코드를 작성한다면 계속 오류에 걸릴 거 같다.
* 플레이어가 모든 기회를 사용하고 숫자를 추측하지 않은 경우 비밀 번호를 출력합니다.
* 게임이 종료됩니다.
3. 실행 화면
4. 마치며
예제 자체는 간단했다. 하지만 파이썬의 문법도 잘 모르는 상태에서 import, random 등의 모듈 사용법에
대해서 알게 되었고 특히 while, if 문 사용에서 범위에 대해 보는 순간 많이 당황했다.
이래서 나이 먹고 새로운 거를 받아들이는 게 힘들구나 하는 생각이 들었다.
지금 까지 조금이라도 공부했던 언어들은 C문법의 기본적인 것들은 유지가 되었는데
파이썬은 정말 많이 다르다는 생각이 들었고 생각보다 습득해야 할 내용들이 많을 거 같아서 살짝
귀찮을 거 같다는 생각이 든다.
그래도 시작했으니 최소 한 파이썬 소스를 직접 작성하지는 않더라도 최소 보고 파악 정도는 할 수 있을 때까지
진행해보자
댓글