이번에 내야 할 과제가 총 3가지가 있는데 첫번째가 바로 이 숫자 맞추기 게임이다.
주말에 집중해서 과제 3개를 한꺼번에 할 예정이었지만.. 자꾸 과제들이 눈에 아른거려서 어쩔수없이 첫번째부터 시작 해버렸다.
과제 내용
플레이어와 컴퓨터가 참여하는 숫자 맞추게 게임을 만드세요.
프로그램은 다음과 같은 기능을 포함해야 합니다.
컴퓨터는 1부터 10사이의 랜덤한 숫자를 생성합니다.
플레이어는 숫자를 입력하고, 입력한 숫자가 큰지 작은지 힌트를 얻습니다.
플레이어가 숫자를 맞힐 때까지 위 과정을 반복합니다.
입출력 예시
1과 10 사이의 숫자를 하나 정했습니다.
이 숫자는 무엇일까요?
예상 숫자: 5
너무 큽니다. 다시 입력하세요.
예상 숫자: 4
너무 큽니다. 다시 입력하세요.
예상 숫자: 3
정답입니다!
처음에는 쉬워보였는데 혼자 짜려고 하다보니 막히는 부분들도 꽤 있었다ㅠ
일단 랜덤 숫자를 생성하는 법을 몰랐는데!!
참고 자료
이렇게 참고자료로 남겨 주셨다.
쓰려고 하니 안에 어떤 함수들이 있는지 잘 몰라서 이건 어쩔 수 없이 검색을 해보았다.
랜덤 숫자를 생성하기 위해 여러가지 유용한 함수들이 있었지만 나는 randrange()함수를 선택하기로 했다.
그리고 나는 최대한 내가 할 수 있는 수준안에서 가독성이 좋은 코드를 짜는 것이 목표였다.
그렇게 해서 나오게된 첫 결과물이 이것!!
import random
number = random.randrange(1, 11)
print('Quiz!! 제가 생각하고 있는 숫자를 맞춰 보세요!')
a = int(input('1~10중에서 아무거나 골라주세요.'))
while number != a:
if a > number:
print('숫자가 큽니다')
a = int(input('정답은?'))
else:
print('숫자가 작습니다')
a = int(input('정답은?'))
print('success!!')
솔직히 입력하는 부분이 3개나 되어서 비효율적이라고 생각은 했지만 나름 고민하고 짠 코드라 이것으로 어느정도 만족하고 있었는데, 최대한 간결하고 가독성 있게 코드를 짤 수 있도록 하기 위해서 gpt에게 한번 평가를 맡겨봤다... 결과는.... 코드는 직관적이지만 간결하지 못하고 가독성이 좋지 못하다고 했다.. 열심히 짠 코드에 대해서 비평을 받고나니 정신이 어질해졌지만.. 최대한 더 좋은 코드를 짜기 위해 심사숙고하고 발로 뛴 결과...
내 코드는 이렇게 바뀌었다.
import random
number = random.randrange(1, 11)
print('QUIZ 1~10사이의 숫자중에서 하나 골라보세요!')
while True:
select = int(input('무엇을 고르실건가요?'))
if number > select:
print('up')
elif number < select:
print('down')
else:
print('success')
그래도 이 코드는 전 코드보다 악평을 덜 듣게 되었다^^ 후...
여기서 더 나아가 나는 추가 도전 과제도 해보고 싶었기에 다시 또 열심히 코드를 짜게 되었다.
추가 도전 과제예시는 아래에↓
1과 10 사이의 숫자를 하나 정했습니다.
이 숫자는 무엇일까요?
예상 숫자: 5
너무 큽니다. 다시 입력하세요.
예상 숫자: 4
너무 큽니다. 다시 입력하세요.
예상 숫자: 3
정답입니다!
게임을 다시 하시겠습니까? (y/n): y
1과 10 사이의 숫자를 하나 정했습니다.
이 숫자는 무엇일까요?
예상 숫자: 2
너무 작습니다. 다시 입력하세요.
예상 숫자: 6
너무 큽니다. 다시 입력하세요.
예상 숫자: 5
너무 큽니다. 다시 입력하세요.
예상 숫자: 4
정답입니다!
게임을 다시 하시겠습니까? (y/n): n
게임을 종료합니다. 즐거우셨나요? 또 만나요!
이렇게 게임반복 여부를 묻고, 재시작 하거나 게임을 종료하는 기능을 추가 하는 것이었다.
금방 할 줄 알았지만... 이것도 하나의 큰 산이었나니...
import random
number = random.randrange(1, 11)
print('QUIZ 1~10사이의 숫자중에서 하나 골라보세요!')
while True:
select = int(input('무엇을 고르실건가요?'))
if number > select:
print('up')
elif number < select:
print('down')
else:
print('success')
ask = input('게임을 다시 하시겠습니까? (y/n) :')
if ask == y:
continue
else:
print('게임을 종료합니다. 언젠가 다시 만나요!')
break
이렇게 코드를 짰는데 y 가 define되지 않았다고 계속 뜨는 것이다.
그래서 y == True 를 넣어줬는데도 실패.. 아 큰일이다 뭐가 문제인지 모르겠다 하면서 나름 이것저것 시도해보다가 갑자기 집에 있던 파이썬책이 생각이 났다!!
예전에 공부하려고 산거였는데 흐지부지 되서 책장에 고이 모셔놨었는데, 결국 이렇게 쓸모가 있는 날이 오게 되었다!!
여튼 책에서 while 문에 대해서 찾아보다가 유레카!!!! 구문을 ( if ask in ['y','Y']: ) 이렇게 바꿔주면 되는것이었다!!
그래서 완성된 코드는
import random
number = random.randrange(1, 11)
print('QUIZ 1~10사이의 숫자중에서 하나 골라보세요!')
while True:
select = int(input('무엇을 고르실건가요?'))
if number > select:
print('up')
elif number < select:
print('down')
else:
print('success')
ask = input('게임을 다시 하시겠습니까? (y/n) :')
if ask in ['y','Y']:
continue
else:
print('게임을 종료합니다. 언젠가 다시 만나요!')
break
이번에는 아주 잘 돌아갔다~
이것으로 힘든 첫번째 개인과제가 끝이났다. 아 이 코드는 더 이상 gpt에게 물어 보지않을거다^^ 바로 제출할생각이다.
첫 번째가 생각보다 힘들었지만 아직 두개가 더 남았으니까 힘내서 열심히 해야지!
'Coding > Task' 카테고리의 다른 글
클래스와 함수 사용하기 (2) | 2024.10.13 |
---|---|
웹개발 gpt 4주차 숙제 (5) | 2024.09.20 |
웹개발 gpt 3주차 숙제 (1) | 2024.09.13 |
1주차 (숙제) (0) | 2024.09.02 |
스타터노트 (0) | 2024.08.27 |