Img profile default
iter
  • 2016.3.22 00:10
  • 조회수 157
  • 답변수 1
Img profile default
iter
  • 2016.3.22 00:10
  • 조회수 157
  • 답변수 1

무엇이 잘못된 걸까요?

강의에 나오는 가위바위보 게임을 조금 바꿔서 만들어보았습니다.

scissor='가위 '
paper='종이'
rock='바위'

win='이겼다'
lose='졌다...'
draw='비겼다'


mine='가위'
yours='바위'

if mine==yours:
    result=draw
else:
    if mine==rock:
        if yours==scissor:
            result=win
        else:
            result=lose
    else:
        if mine==paper:
            if yours==rock:
                result=win
            else:
                result=lose
        else:
            if mine==scissor:
                if yours==paper:
                    result=win
                else:
                    result=lose
            else:
                print('이상해요')


print(result)

->이렇게 했더니니

이상해요
Traceback (most recent call last):
File "ifelse.py", line 37, in
print(result)
NameError: name 'result' is not defined

->이런 오류가 뜨네요....

그런데 조금 고쳐서서( mine=scissor, yours=rock 으로 바꿨습니다.)

scissor='가위 '
paper='종이'
rock='바위'

win='이겼다'
lose='졌다...'
draw='비겼다'


mine=scissor
yours=rock

if mine==yours:
    result=draw
else:
    if mine==rock:
        if yours==scissor:
            result=win
        else:
            result=lose
    else:
        if mine==paper:
            if yours==rock:
                result=win
            else:
                result=lose
        else:
            if mine==scissor:
                if yours==paper:
                    result=win
                else:
                    result=lose
            else:
                print('이상해요')


print(result)

->이렇게 했더니

졌다...

->정확히 출력 되네요....

바뀐 거라고는
mine='가위'
yours='바위' 를
mine=scissor
yours=rock 로 바꾼게 전부입니다.

그런데 강의에서도 첫번째 정의처럼 하였고
논리적으로 생각하기에도 두 개가 다를 것이 없는데
왜 전자에서는 출력이 안되고 후자에서는 출력이 되는지 궁금합니다.

  • #파이썬 입문
  • #if else

1 답변

  • G3rlasealonpd5c2kica
    Demi
    • 2016.3.22 00:31

    코드 맨 윗부분 scissor='가위 '에서 가위 뒤에 공백이 한칸 있네요.
    그래서 공백이 없는 mine = '가위'scissor가 일치하지 않아서 계속 이상해요.. 가 출력됩니다.
    공백때문에 "가위"로 걸러지지 않아서 맨 마지막 else문이 실행되는 것이지요.
    또 맨 마지막의 else를 제외하고는 그 어떤 조건문도 만족시키지 않기 때문에 result에 값이 할당된 적이 없어서 print(result)를 실행하면 에러가 발생합니다.

    두 번째 코드에서는 mine = scissorminescissor가 일치하기 때문에 정상적으로 출력됩니다.

    • 감사합니다 !-iter
      2016.3.22 13:33

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.