강의로 돌아가기
-

왜 예상대로 나오지 않을까요 ㅠ

print('안녕하세요, 이름이 무엇입니까?')
myName = input()

number = 60
#random.randint(1, 100)
print('오, ' + myName + ', 저는 무작위의 숫자를 생각하고 있습니다. 맞춰보세요.')

guessesTaken=0
while guessesTaken < 8:
print('추측해보세요.')
guess = input()
guess = int(guess)

if guess >= 100:
print('오, 범위를 안 알려 드렸네요. 이 숫자는 100보다 작습니다. 걱정마세요. 추가로 기회를 드리겠습니다.')

if guess <= 0:
print('오, 범위를 안 알려 드렸네요. 이 숫자는 0보다 큽니다. 걱정마세요. 추가로 기회를 드리겠습니다.')

if guess > 0 and guess < 100:
if guess < number:
if abs(number - guess) <=10:
print('숫자가 조금 작네요. (오차범위 +-10이하)')
if 10 < abs(number - guess):

print('숫자가 많이 작네요. (오차범위 +-10초과)')
guessesTaken = guessesTaken + 1
if guess > number: #부등호연결가능
if abs(number - guess) <=10:
print('숫자가 조금 크네요. (오차범위 +-10이하)')
if 10 < abs(number - guess):

print('숫자가 많이 크네요. (오차범위 +-10초과)')
guessesTaken = guessesTaken + 1

if guess == number:
break

if guess == number:
number = str(number)
print('좋아요, ' + myName + '! 당신은 제가 생각한 ' + number + ' 을 맞추셨습니다!')

if guess != number:
number = str(number)
print('아쉽네요. 제가 생각한 숫자는 ' + number + ' 입니다. 다시 도전해보세요!')

숫자맞추기 게임 코드를 짜봤습니다.

원래 random 함수를 써서 임의의 숫자를 맞추는 게임이지만 일단 코드 자체가 맞는지 확인해 보기 위해 정답을 60으로 고정해놓았습니다.

실행시켜보면 8번의 기회 안에서 정답을 맞췄을 경우 맨 밑의 두 if문 두가지가 모두 실행되면서 좋아요, 아쉽네요 문장이 전부 출력됩니다.

두번째 if를 elif로 바꾸면 아쉽네요~ 문장이 뜨지 않는데

두 줄을 모두 if 로 했을 경우 왜 문제가 되는 지 궁금합니다.

1 개의 답변
-

if 를 두번 쓴 경우는 각각의 if 문의 조건을 모두 체크 합니다.
하지만 if~elif 를 쓴 경우는 if 문의 조건이 맞지 않은 경우에 elif 구문을 체크합니다.
if~elif 에서 if문의 조건이 True 가 되면 elif 구문은 체크하지 않습니다.

아래 차이점을 생각해보시면 될 것 같네요.

1. if 문 두 개

if True : 
    print(' true 1')

if True :
    print(' true 2')

결과 :
true 1
true 2

2. if ~ elif

if True :
    print(' true 1')
elif True :
    print(' true 2')

결과 :
true 1

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