• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코드 이해

20.08.05 10:40 작성 조회수 116

0

    if failed == 0:

        print()

        print()

        print('Congratulations! The Guesees is correct.')

이 코드에서 이해가 되지 않는 부분이 있어 질문드립니다. 

failed 횟수가 3,4,5 등이어도 turns 를 넘어서지 않는다면 게임 성공인데 

왜 if failed == 0: 이라고 코드를 짜나요??

답변 2

·

답변을 작성해보세요.

2

엠엠님의 프로필

엠엠

2020.10.04

failed는 여기서 게임의 실패횟수가 아닙니다. turns가 동전(게임의 목숨)이라고 생각하시면 좋을것 같습니다. While문이 동작할 때마다 정답인 word와 유저가 입력한 guesses의 일치하지 않는 글자의 수를 세어 failed에 저장한다고 보시면 되겠습니다.

만약, word: secret / user입력: abcd 라면, failed는 4로 나올겁니다(secret은 5글자인데, abcd와 secret간에 일치하는 글자는 c만 있으니까, 일치하지 않는 것은 4글자 입니다.)

그리고 abcd는 guesses에 누적되고, turns는 -1이 반영되어 9로 됩니다.

계속 While문이 실행되다가 guesses에 s, e, c, r, e, t 라는 글자가 모두 모였을때(게임에 성공했을때)를 가정해보겠습니다. 그때에는 failed += 1 이 있는 else 구문이 실행되지 않습니다. 따라서 매번 While문이 실행되면서 초기화 되었던 failed는 여전히 0을 갖고 있습니다. 

그렇기 때문에 failed가 0이라는 의미는 '유저가 word를 조합하는데 필요한 모든 글자를 입력하였다' 라고 볼 수 있습니다.

guesses에 계속 유저가 입력한 글자가 쌓이고, 매번 guesses를 word와 비교하며 While문이 실행된다고 보시면 되겠습니다.(turns는 While문 바깥에 선언해서 실패 했을때 turns -= 1에만 영향을 받음)

0

안녕하세요.

작성하기 나름입니다.

한 번에 성공했을 경우 failed가 0 이므로, 작성한거예요

스스로 적합하게 코딩하시면 됩니다.