코딩 개발일지

TIL 10일차 - 1~100숫자 맞추기 / 가위바위보 게임 [python] 본문

AI 본 교육/AI 3주차

TIL 10일차 - 1~100숫자 맞추기 / 가위바위보 게임 [python]

호기호 2023. 8. 23. 21:34

어제도 예비군 갔다와서.. 벌써 2일이나 빠져버렸다ㅏㅏ

밀린공부 + 과제하는데 좀 힘들었다.

 

최종 과제 제출내용.(1번)

import random

random_number = random.randint(1, 100)
# print(random_number)

count = 0
num = int(input("1~100사이의 숫자를 입력해 주세요."))

while True:
    try:
        if 1 > num or num > 100:
            print(f'{num}은 1~100사이의 숫자가 아닙니다. 다시 입력해 주세요.')
            num = int(input(""))

        elif num < random_number:
            print(f'{num}보다 큽니다. 다시 입력해 주세요.')
            num = int(input(""))
            count = count+1

        elif num > random_number:
            print(f'{num}보다 작습니다. 다시 입력해 주세요.')
            num = int(input(""))
            count = count+1

        elif num == random_number:
            count = count+1
            print(f'정답입니다. 총 {count}번 시도했습니다.')
            Continue = str(input("계속하시겠습니까? [YES] [NO]"))
            if Continue == "YES":
                random_number = random.randint(1, 100)
                num = int(input("1~100사이의 숫자를 입력해 주세요."))
                count = 0
            elif Continue == "NO":
                break

    except ValueError:
        print("알맞은 숫자를 입력하세요.")
        num = int(input(""))

    except:
        print("알맞은 숫자를 입력하세요.")
        num = int(input(""))

이렇게 제출했는데, 해설을 듣고나니 부족한 부분이 있었다. 코드의 간결화가 중요할 것 같다.

# continue 써야됌
# while 문 안에 while문 써서 반복

해설에서는

will_continue = input("계속하고 싶으시면 yes를 입력해주세요")

        if will_continue == "yes":
            continue
        else:
            break

이렇게 break를 걸어서 아무거나 쳐도 break가 된다. 살짝 불..편? 나는 이거땜에 몇시간 날렸는데ㅜㅜ

try except를 걸어도 되지만, 더 쉬운 방법이 있었다!


최종 과제 제출내용.(2번)

import random

user = input("가위 바위 보 !!! (입력해주세요.)")
count_win = 0
count_lose = 0
count_same = 0

while True:
    try:
        # computer = random.choice(['가위', '바위', '보'])
        computer = '가위'

        # 무승부
        if user == computer:
            print(f'컴퓨터는 {computer}를 냈습니다.')
            print("무승부")
            count_same = count_same + 1

            Continue = str(input("계속하시겠습니까? [YES]=Y [NO]=N "))
            if Continue == "Y" or "Y".lower():
                user = input("가위 바위 보 !!! (입력해주세요.)")
            elif Continue == "N" or "N".lower():
                print(f'승리:{count_win}회,패배:{count_lose}회,무승부:{count_same}회')
                break
        # computer 가위
        elif computer == '가위':
            print(f'컴퓨터는 {computer}를 냈습니다.')
            if user == '바위':
                print("승리")
                count_win = count_win + 1

                Continue = str(input("계속하시겠습니까? [YES]=Y [NO]=N "))
                if Continue == "Y" or "Y".lower():
                    user = input("가위 바위 보 !!! (입력해주세요.)")
                elif Continue == "N" or "N".lower():
                    print(f'승리:{count_win}회,패배:{count_lose}회,무승부:{count_same}회')
                    break

            elif user == '보':
                print("패배")
                count_lose = count_lose + 1

                Continue = str(input("계속하시겠습니까? [YES]=Y [NO]=N "))
                if Continue == "Y" or "Y".lower():
                    user = input("가위 바위 보 !!! (입력해주세요.)")
                elif Continue == "N" or "N".lower():
                    print(f'승리:{count_win}회,패배:{count_lose}회,무승부:{count_same}회')
                    break
            elif computer == '바위', '보'                ('가위'와 마찬가지로)

이렇게 힘들게 했는데, 코드가 너무길어서 별로였다. 해설에서는 < not in > 으로 try except를 대체했고, 오류도 한방에해결함 ㅜㅜ

그리고 해설에서는 묶을 수 있는걸 최대한 묶어서 코드 길이가 반토막났다. 나는 너무 노가다한 느낌이 강했음.


아직 while문 안에 while 문을 한번 더 쓴다던지, if 문 안에 if문을 또 건다던지 여러개의 조건, 반복문을 걸어서 코드를 짜는것을 생각해내지 못한 것 같다.