7시간동안 맨 땅에 헤딩을 하며
튜터님들의 도움을 조금씩 얻은 결과
이 로직의 순서도가 어떻게 돌아가는지 알게 됐으며,
마침내 과제로 내주신 up,down game을 코드를 실현시켰다.
인간은 왜 고통 받아야 지식을 습득하는 것인가.. (´_ゝ`)
import random
random_number = random.randint(1, 100)
print(random_number)
count = 1 # 0으로 초기화하면 처음 retry 때 0번 맞추셨습니다 출력
user_retry = "y" # 재시도
user_quit = "n" # break문으로 코드 종료
# game start
while True:
user_input = int(input("숫자를 입력하세요 :"))
if user_input > random_number:
count += 1
print("Down")
elif user_input < random_number:
count += 1
print("Up")
else:
print("맞았습니다")
print(f"{count}번 시도하셨습니다.")
# 이 로직을 잘 이해해야 한다 / 꼭 else 를 쓴다고 코드가 끝 맺음이 아님
# 제일 막혔던 부분이다.
user_input = input("다시 하시겠습니까? (y/n) :")
if user_input == user_quit:
break
elif user_input == user_retry:
random_number = random.randint(1, 100)
print(f"이전 게임 플레이어 최고 시도 횟수 : {count}")
print(random_number)
count += 1
이 로직 순서도를 설명하자면
유저가 int(input으로 입력한 문자열 => 숫자 데이터가
랜덤으로 뽑힌 random_number 보다 클 경우 Down
반대로 random_number 보다 작을 경우 Up
시도를 할 때마다 count 는 += 1 씩 늘어난다.
이도 저도 아니다 ( up도 down도 아니다, 그럼 정답이겠죠? )
else 맞았습니다 출력
f 스트링을 이용하여 f"{count}번 시도하셨습니다" 출력
주석에도 써놨듯이 가장 막힌 부분이 else를 쓰면 이 while 문이 무조건
끝나야 하는 줄 알고 break 문을 상시 배치 시켜놓았었다.
정 막혀서 구글링한다 해도 잘하자.. 😹
정답을 맞춘 후에,
다시 user에게 input으로 재시도를 할건지 게임을 종료할건지 물어본다.
이번엔 정수형이 아니여도 되기 때문에 int로 감싸지 않았다.
만약 유저가 입력한 input의 텍스트가 처음에 변수로 선언한
user_quit의 n 과 같을 경우, break 게임 종료
그게 아니고 user_retry의 y 와 같을 경우 다시 처음으로 돌아가서 게임이 진행된다.
max_count 라는 변수가 필요할 줄 알았는데,
그냥 count를 f 스트링으로 다시 작성하면 되는것이였다.
이전 게임의 플레이어 최고 시도 횟수는 count와 똑같다.
처음에 이 소리가 도무지 이해가 안됐었는데 별 뜻이 없다.
다시 시도할때의 프린트 문자열만 다르게 해주면 되는 것일 뿐
이번 첫 주차 정말 많이 힘들었다.
강의를 봐도 머릿 속에 도무지 들어오지도 않았었고,
따라 쓰기만 해도 벅찬 내 자신이 너무 괴로웠다.
그래도 울면서 강의에 나온 for문이라던지 while문이라던지 등을
다른 데스크탑의 파이참에 적어둔 일은 참 잘한 것 같다.
오늘 헤딩을 하면서 정말 많은 도움이 되었기 때문이다.
고능한 구글링이나 chat GPT는 힌트가 아닌 "이거 정답임" 을 말해주어서
그건 내가 직접 머리를 굴리며 부딪히는게 아니라고 느꼈다.
전체적인 틀은 내 머릿 속으로 고뇌하며 잡았고, 거기서 도무지 형식 자체를 몰랐었던 "else문 해도 끝 아님" 과 간결한 로직 순서도(cleancode) 정도만 튜터님에게 도움을 받았다.
계속 이 느낌으로만 갔음 좋겠다.
다음주에도 화이팅이다 내 자신 🤓