조건문

상황에 따른 어떠한 것을 선택해야 할 때 사용합니다.

앞으로 아주 많이 사용하게 될 조건문에 대해 배우겠습니다. 왜 많이 사용하게 되는지는 일생 생활을 생각하시면 됩니다. 우리는 살면서 아주 많은 선택을 해야합니다. 거의 매일 생각하는 점심에 뭐 먹지? 선택지가 있고 어떠한 것을 선택합니다. 이런 조건들을 상황에 맞게 선택하는 코드를 조건문이라 합니다.

if

if문의 사용법입니다. if(조건): 조건이 참(True)이면 실행되는 코드

value = 2

if(value == 1):
    print("value One")

if(value == 2):
    print("value Two")

03 value 값은 2이고, 1과 같은지 비교를 합니다. 04 value 값과 1이 같으면 실행되는 코드를 작성합니다.

value 값이 2이기 때문에 화면에 "value Two"라는 문장이 나타나겠죠?

else

else 는 단독으로 사용하지 못합니다. if와 같이 사용해야 합니다. if의 조건에 맞지 않는 나머지를 상황을 처리합니다.

value = 2

if(value == 1):
    print("value One")
else:
    print("value Noe One ")

if(value == 2):
    print("value Two")
else:
    print("value Not Two")

03 value에 있는 값이 1인지 비교를 합니다. 04 value 값이 1이면 화면에 "value One"을 출력합니다. 05 03번 라인의 조건이 거짓인 경우

value에 값은 2입니다. 03 1과 같지 않기 때문에 06번 라인이 실행됩니다.

elif

참, 거짓 둘로 나눌수 없는 일들이 많있고 선택지도 다양하죠. 이때 사용할 수 있는게 elif (else if)입니다. value 가 1, 2인 상황을 만들 수 있습니다.

value = 2

if(value == 1):
    print("value One")
elif (value == 2):
    print("value Two")
else:
    print(" not matched ")

들여쓰기

작성한 코드와 연결되어 어떠한 코드가 실행 될 때 들여쓰기를 합니다. 연결됨을 알리기 위해 :(세미콜론)을 꼭 붙여야 하고 연결되는 코드는 스페이스 or tab을 사용해서 앞을 띄워야 합니다. 스페이스와 or tab 중 편한것을 사용하시면 됩니다. 둘을 혼용했을 때 실수할 수 있으니 하나만 사용하는 것을 권장합니다. 조건문에서 if(조건): 실행할 문장 이렇게 사용했었죠.

Python의 룰이니 꼭 기억하세요!

* 입력값 받기!!!

VS Code에서 사용자 입력값 받기 위해서는 조금 불편한 과정이 있습니다. 아래 잘 정리 되어있는 내용이 있으니 따라 해보세요.

문제

문제1 사용자 입력값에 따라 1일 때 빨간색 2일 때 주황색 3일 때 노랑색 4일 때 초록색 ...... (무지개) 출력되는 코드를 작성하세요.

참고 코드
userInput = input(' 1~7까지 숫자를 입력하세요!! ')
if(userInput.isnumeric()) :
    intUserInput = int(userInput)
    if(intUserInput == 1) :
        print('빨간색')
    elif(intUserInput == 2) :
        print('주황색')
    elif(intUserInput == 3) :
        print('노랑색')
    elif(intUserInput == 4) :
        print('초록색')
    elif(intUserInput == 5) :
        print('파랑색')
    elif(intUserInput == 6) :
        print('남색')
    elif(intUserInput == 7) :
        print('보라색')
    else :
        print('1~7까지 숫자를 입력 하시라고요! ')
else:
    print('숫자 형식을 입력하세요.')

문제2 입력값 0 일 때 빨~보라색 까지 출력되는 코드를 작성하세요.

참고 코드
userInput = input(' 1~7까지 숫잘르 입력하세요!! / 모두 출력은 0 ')
if(userInput.isnumeric()) :
    intUserInput = int(userInput)
    if(intUserInput == 0) :
        print('빨간색', '주황색', '노랑색', '초록색', '파랑색', '남색', '보라색')
    elif(intUserInput == 1) :
        print('빨간색')
    elif(intUserInput == 2) :
        print('주황색')
    elif(intUserInput == 3) :
        print('노랑색')
    elif(intUserInput == 4) :
        print('초록색')
    elif(intUserInput == 5) :
        print('파랑색')
    elif(intUserInput == 6) :
        print('남색')
    elif(intUserInput == 7) :
        print('보라색')
    else :
        print('0~7까지 숫자를 입력 하시라고요! ')
else:
    print('숫자 형식을 입력하세요.')

문제3 로봇 전시회를 갔습니다. 다양한 로봇 중 사람과 대화하는 로봇을 발견했습니다. 나 : 신기한 로봇이네 로봇 : 안녕하세요. 저는 K23입니다. 나 : 안녕. 로봇 : 안녕하세요. 전시회는 즐거웠나요? 나 : 오!! 이런 말을 하네? 신기하네 로봇 : 저는 사람과 친구가 되기 위해 대화를 학습하고 있습니다. 나 : 그래서 많이 배웠어? 로봇 : 저는 대화를 학습하고 있습니다. 나 : 지금 나한테도 배웠어? 로봇 : 저는 대화를 학습하고 있습니다. 나 : 그래서 지금 대화에서도 많이 배웠냐고. 로봇 : 저는 대화를 학습하고 있습니다. 관계자 : 지금 이 로봇은 개발중인 상태라 자유로운 언어 구사가 되지는 않습니다.. 로봇 : 안녕하세요. 저는 K23입니다. 로봇 : 저는 대화를 학습하고 있습니다. 나 : 그렇군요. 즐거웠어 로봇~ 로봇 : 안녕히가세요. 즐거운 전시회가 되시길 바랄께요. 나 : 안녕~ 로봇 : 안녕하세요. 전시회는 즐거웠나요? 위 예제와 같이 사용자가 입력값에 따라 출력하는 로봇을 만들어보세요.

참고 코드
mySay = input(' say anything  : ')

if(mySay.find('로봇') != -1):
    print('안녕하세요. 저는 K23입니다.')
elif(mySay.find('안녕') != -1):
    print('안녕하세요. 전시회는 즐거웠나요?')
elif(mySay.find('말') != -1 or mySay.find('글') != -1 ):
    print('저는 사람과 친구가 되기 위해 대화를 학습하고 있습니다')
elif(mySay.find('학습') != -1):
    print('저는 대화를 학습하고 있습니다.')

조건문을 위한 비교 연산자

기호

의미

x > y

x 값이 y 값보다 크면 True, 그 외에는 False

x < y

x 값이 y 값보다 작으면 True, 그 외에는 False

x >= y

x 값이 y 값보다 크거나 같으면 True, 그 외에는 False

x <= y

x 값이 y 값보다 작거나 같으면 True, 그 외에는 False

x == y

x 와 y 의 값이 같다면 True, 그 외에는 False

x ! = y

x와 y의 값이 같지 않다면 True, 그 외에는 False

var1 = 200
var2 = 100

if(var1 > var2):
    print("var1 greater than var2")
else :
    print("var1 not greater than var2")

var3 = 100
var4 = 100
if(var3 >= var4):
    print("var3 greater than or same with var4  ")

if(var3 <= var4):
    print("var3 less than or same with var4")

if(var3 == var4):
    print("var3 and var4 same")

var5 = 30
var6 = 20

if(var5 != var6):
    print("var5 and var6 not same")

if 10 < var6 <= var5 :
    print("var6 greater than 10 but less than var5")

위의 예제는 비교 연산자를 사용하는 조건문의 예시입니다. 수학 교과서와 같은 형태로 특정 수보다 크거나, 작다는 내용을 비교하며 해당 내용은 True 또는 False로 확인됩니다.

26행을 보면 특정 두 값 사이의 조건이 맞는지를 비교하는 것을 볼 수 있습니다. 또한 소괄호 없이도 비교할 수 있다는 내용을 기억하면 좋습니다.

조건문을 위한 논리 연산자

기호

x and y

x와 y 가 모두 True 이면 True, 그 외에는 False

x or y

x또는 y 가 True이면 True, 그 외에는 False

not x

x가 True이면 False, x가 False이면 True

varstr1 = "Dog"
varstr2 = "Cat"

vcnt1 = 3
vcnt2 = 2

if varstr1 == "Dog" and vcnt1 == 3 :
    print("Bark")

if varstr1 == "Howl" or vcnt1 == 3 :
    print("Bark too")

if (varstr1 == "Dog" and vcnt1 == 3) or (varstr2 == "Cat" and vcnt2 == 2):
    print("What animal?")
    
if (varstr1 == "Dog" and vcnt1 == 3) and (varstr2 == "Cat" and vcnt2 == 2):
    print("Dogs and Cats")

논리 연산자의 경우는 비교하는 내용이 참인지 거짓인지를 구분합니다. 비교 연산자가 산술적인 값을 비교한다면, 논리 연산자는 조건문의 참 거짓 관계를 확인하여 동작합니다.

7행을 보면 varstr1의 'Dog'과 vcnt1=3 의 조건이 모두 참이라, "Bark"를 출력할 것을 예상할 수 있습니다. 반면 10행은 varstr1이 ' Howl'이 아님에도 "Bark too"를 출력합니다. 10행은 7행과는 달리 varstr1 과 vcnt1의 비교 내용 결과 중 하나만 만족하면 되기 때문입니다.

13행과 16행 내용도 결과적으로 논리곱(And)이냐 논리합(Or)에 따른 판단의 유무를 확인하는 내용입니다. 여기서는 여러 종류의 조건문을 다룰 경우 소괄호를 사용하여 먼저 처리해야할 논리 연산의 부분이 무엇인지를 명확하게 하는 것을 보여줍니다.

Last updated