[Python] 숫자 맞추기 게임(random, for문, if문)
안녕하세요~ 2023년 새해 첫 글이네요ㅎㅎ 벌써 1년이 지났다니.. 시간 참 빠른 것 같지 않나요? 다들 2023년에는 무슨 목표들을 가지고 있나요? 저는 크게 작년의 저보다 더 성장하고 발전해나가는 것이 목표입니다..! 음..뭔가 여기에서 더 말하면 오글거릴 거 같아서 stop..할게요ㅎ.....나중에 수치스러워질 거 같아..요
다들 새해 복 많이 받으시고 포스팅 시작할게요!

이번 포스팅은 "컴퓨터가 생각하는 임의의 수를 맞추는 게임" 프로그램을 작성해볼건데요, 규칙 먼저 살펴볼게요!
※ 규칙
1. 게임 시작 전에 몇 게임을 할 건지 사용자에게 입력받고 그 횟수만큼 게임을 진행한다.
2. 단, 한 게임당 시도할 수 있는 횟수를 정하고 정해진 횟수 내에 성공하지 못하면 실패하는 것으로 정한다.
3. 사용자의 수가 컴퓨터의 수보다 매우 크거나 작으면 "너무 커요", "너무 작아요" 메시지를 출력다고 다시 입력을 기다린다.
4. 답에 어느정도 가까워지면 답에 근접햇다는 메시지를 출력하고 정답을 맞출 수 있도록 유도한다.
5. 정해진 게임 수만큼 시도하여 성공한 횟수와 실패한 횟수까지 출력한다.
6. 게임을 종료했을 경우 사용자가 이긴 횟수와 컴퓨터가 이긴 횟수를 출력하고 최종 승자를 알려준다.
import random
trise = 5 # 시도횟수
win = 0 #사용자가 이긴 횟수
fail = 0 # 실패한 횟수
game = int(input("몇 게임을 진행할 것입니까? :"))
for i in range(game): # 게임횟수 반복문
print("{}번째 게임을 시작합니다. 1부터 10사이의 숫자를 맞추세요.\n".format(i+1))
number = random.randint(1, 10)
for j in range(trise): # 한 게임 안에 시도를 할 반복문
guess = int(input("숫자를 입력하세요.(5번의 기회가 주어집니다): "))
if (guess == number):
print("정답입니다!\n")
win += 1
break
elif (guess < number):
if (number - guess > 0) and (number - guess <= 2):
print("거의 근접했어요. 조금만 더 높이세요\n")
fail += 1
else:
print("너무 낮아요. 다시 입력하세요.\n")
fail += 1
elif (guess > number):
if (guess - number > 0) and (guess - number <= 2):
print("거의 근접했어요. 조금만 더 낮추세요\n")
fail += 1
else:
print("너무 높아요. 다시 입력하세요.\n")
fail += 1
# 외부 for문이 끝나면
com = game - win # 컴퓨터가 이긴 횟수
print(f"성공한 횟수 {win}, 실패한 횟수 {fail}\n")
print(f"사용자가 이긴 횟수 : {win}회, 컴퓨터가 이긴 횟수 {com}회")
if (win > com):
print("최종 승자는 사용자입니다.")
elif (win < com):
print("최종 승자는 컴퓨터입니다.")
else:
print("사용자와 컴퓨터는 동점입니다.")
random 함수를 사용하기 위해 import 해줍니다.
시도 횟수(trise)와 사용자가 이긴 횟수, 실패한 횟수를 변수로 지정해줍니다. 시도 횟수는 임의로 5로 정합니다.
사용자로부터 몇 게임을 진행할 것인지를 입력받은 후, int로 변환해준 것을 변수 game에 넣어줍니다.
for 반복문을 이용하여(외부 for문) , 사용자로부터 입력받은 수(game)만큼 반복을 하도록 코드를 작성해줍니다.컴퓨터의 수를 지정해주기 위해, random.randint 함수를 사용하여 1부터 10사이의 랜덤 숫자를 변수 number에 저장해줍니다.이것은 외부 for문 안에 있기 때문에 게임이 새로 시작될 때마다 컴퓨터의 랜덤수는 바뀌게 됩니다.
내부 for문에서는 앞서 변수로 지정해준 시도 횟수(trise) 만큼 사용자의 숫자 맞추는 시도가 반복되도록 해줍니다.사용자가 컴퓨터의 숫자를 맞추도록 사용자의 수를 입력받고 guess 변수에 넣어줍니다.
만약(if) 사용자가 입력한 수(guess)가 컴퓨터의 수(number)과 같다면, "정답입니다!"를 출력합니다.정답을 맞혔으니 사용자가 이긴 횟수(win)를 하나 증가시켜줍니다.그리고 시도횟수 반복문을 빠져나오고 다음 게임을 진행합니다.
그게 아니라(elif) guess가 number보다 작다면,
그리고 그 중에서도 만약(if) number-guess가 0보다 크고 2이하로 작으면, 2차이밖에 안나는 것이므로 즉 거의 근접한 것이므로 근접 메시지를 출력해줍니다.
그게 아니라면(else) 너무 낮은 것이기 때문에 너무 낮다는 메시지를 출력해줍니다.
그리고 둘 다 틀린 것이기 때문에 fail 변수를 하나 증가시켜줍니다.
또 그게 아니라(elif) guess가 number보다 크다면,
그리고 그 중에서도 만약(if) guess-number가 0보다 크고 2이하로 작으면, 2차이밖에 안나는 것이므로 즉 거의 근접한 것이므로 근접 메시지를 출력해줍니다.
그게 아니라면(else) 너무 높은 것이기 때문에 너무 높다는 메시지를 출력해줍니다.
그리고 둘 다 틀린 것이기 때문에 fail 변수를 하나 증가시켜줍니다.
그렇게 game 횟수가 다 끝나면 반복문은 종료됩니다.
그 다음 성공한 횟수, 실패한 횟수, 사용자가 이긴 횟수, 컴퓨터가 이긴 횟수를 출력합니다.
성공한 횟수 = win실패한 횟수 = fail시용자가 이긴 횟수 = win컴퓨터가 이긴 횟수(게임 수 - 사용자가 이긴 횟수) = com
마지막으로 출력 결과입니다.
