* 저도 프로그래밍을 처음 공부 하는 것이기 때문에 틀린 설명이 있을 수도 있습니다. 그런 부분을 발견했을 때 따끔한 피드백을 주시면 감사하겠습니다!


if 조건문만 활용하여 경우의 수 만들기

1~100사이의 숫자를 랜덤으로 2개를 뽑아 변수 a, b를 만들고, a, b 중 누가 더 큰지 맞추는 간단한 프로그램을 만들어 보겠습니다.


import random

numbers = range(1,100+1)

a = random.choice(numbers)
b = random.choice(numbers)

guess = input("Which one is bigger? type a, b, or match : ")

변수 a, b를 설정하였고, 프로그램을 실행했을 때 a, b 중 하나를 선택할 수 있도록 input 함수까지 작성하였습니다.

그 다음으로, 답을 선택 했을 때 나올만한 경우의 수를 생각해보도록 하겠습니다.
아래의 표 처럼 총 9가지 경우의 수가 나올 것입니다.


 a>b and guess = "a" 

 (right)

a<b and guess = "a" 

 (wrong) 

a=b and guess = "a" 

 (wrong) 

 a>b and guess = "b" 

(wrong)

a<b and guess = "b" 

(right) 

 a=b and guess = "b" 

(wrong) 

 a>b and guess = "match" (wrong)

 a<b and guess = "match" (wrong)

 a=b and guess = "match" (right)



그럼 if 조건문을 활용하여 9가지의 경우의 수와 그에 따른 결과를 입력해보겠습니다.


#if 조건문만 활용

import random

numbers = range(1,100+1)

a = random.choice(numbers)
b = random.choice(numbers)

guess = input("Which one is bigger? type a, b, or match : ")

if a>b and guess == "a" :
    print(f"right. result : a = {a}, b = {b}")
elif a>b and guess == "b" :
    print(f"wrong. result : a = {a}, b = {b}")
elif a>b and guess == "match" :
    print(f"wrong. result : a = {a}, b = {b}")  
elif a<b and guess == "a" :
    print(f"wrong. result : a = {a}, b = {b}")
elif a<b and guess == "b" :
    print(f"right. result : a = {a}, b = {b}")
elif a<b and guess == "match" :
    print(f"wrong. result : a = {a}, b = {b}")
elif a==b and guess == "a" :
    print(f"wrong. result : a = {a}, b = {b}")
elif a==b and guess == "b" :
    print(f"wrong. result : a = {a}, b = {b}")
elif a==b and guess == "match" :
    print(f"right. result : a = {a}, b = {b}")


표의 내용을 참고하여 위와 같이 입력하면 될 것입니다.

하지만 왠지 경우의 수가 너무 많아 복잡해보입니다.. 경우의 수가 이것보다 더 많다면, 일일히 if 조건문으로 모든 경우의 수를 입력하기 힘들 것입니다. 그리고 경우의 수를 일일히 입력하다보면 실수로 코드를 잘못 입력할 가능성도 그만큼 올라갈 것입니다. 게다가 오류가 발생한다면, 어디서 오류가 났는지 찾는 것도 번거로울 것입니다.

이럴 때는 return과 boolean을 활용하여 경우의 수를 줄이는 것이 더 효과적일 것입니다.



return과 boolean을 활용한 조건문 간소화

#return과 boolean 활용

import random

numbers = range(1,100+1)

a = random.choice(numbers)
b = random.choice(numbers)

guess = input("Which one is bigger? type a or b, or match : ")
def check(guessab) :
    if a == b :
        return guess == "match" 
    elif a > b :
        return guess == "a"
    elif a < b :
        return guess == "b"

result = check(guess, a, b)

if result == True :
    print(f"right. result : a = {a}, b = {b}")
else : 
    print(f"wrong. result : a = {a}, b = {b}")


먼저 check라는 함수를 만들었습니다. 우리가 답으로 선택할 수 있는 경우의 수는 a, b, match 이렇게 3가지가 있을 것입니다. 이것을 if 조건문과 return 기능을 통해, a = b이면 guess는 match, a > b이면 guess는 a, a < b이면 guess는 b가 되도록 설정하였습니다.

그 다음으로는 result = check(guess, a, b)라고 변수를 선언하였습니다.

마지막으로 boolean을 활용하여 유저가 직접 입력한 답과 check 함수에서 만든 조건과 일치하면 정답, 일치하지 않으면 오답이라고 출력되도록 만들었습니다.






프로그램을 실행해보면 위의 스크린샷 처럼 잘 작동되고 있음을 확인할 수 있습니다.


이렇게 return과 boolean을 활용하면 경우의 수가 줄어들기 때문에 써야하는 if 구문의 숫자도 줄일 수 있다는 장점이 있습니다. 

블로그 이미지

방구석 세계인

관심분야 : 외국어 학습, 프로그래밍, 책 리뷰 등...

,