파이썬 제어문

윤태영·2023년 11월 13일
0
post-thumbnail

이미지 출처: https://wikidocs.net/192339

드디어 파이썬 자료형을 끝내고 이제 제어문을 배워보겠습니다. 제어문은 프로그래밍을 완성하는데 1순위로 꼽힙니다. 오늘은 프로그램의 흐름을 어떻게 제어하는지에 초점을 맞추면서 보시면 좋습니다. if 구문이 능숙해지면 자신이 의도한 방향대로 프로그램을 제어할 수 있습니다.

if 구문 실습

  • 관계 연산자 실습
  • 논리 연산자 실습
  • 일반 조건문
  • 다중 조건문
  • 중첩 조건문

먼저 기본형식을 알아야합니다.

기본 형식 📕

전에 배웠듯이 True는 숫자 1이고, False는 숫자 0이라고 했습니다.
true를 나타내는 거는 여러 가지가 있습니다. 문자들, 리스트, 튜플 안에 데이터가 있다면 모두 true입니다. False는 빈 리스트, 튜플, 집합과 같은 것이 있습니다.

print(type(True)) # 0이 아닌 수, "abc", [1, 2, 3..], (1, 2, 3...)...
>>> <class 'bool'>
print(type(False)) # 0, "", [], (), {}... 
>>> <class 'bool'>

예1

  • if다음에 조건식이 들어온다.
  • if는 True일 경우에 하위구문이 실행되고 False일경우 실행x
if True:   
    print('Good') 
>>> Good
if 'a':
     print('Good!')
>>> Good!
if False:
    print('Bad')

예2

  • else 구문은 if구문이 true가 아닌경우에 실행된다.
if False:
    print('Bad')
else: 
    print('Good!')
>>> Good!

관계 연산자 📕

파이썬에서 관계 연산자(또는 비교 연산자)는 값을 비교하고, 두 값의 관계를 평가하는 데 사용됩니다. 이러한 연산자는 조건문에서 자주 활용되며, 다음과 같이 다양한 연산자가 있습니다.

  • > - 왼쪽이 클 때 참을 출력
  • >= - 왼쪽이 크거나 같을 때 참을 출력
  • < - 오른쪽이 클 때 참을 출력
  • <= - 오른쪽이 크거나 같을 때 참을 출력
  • == - 양변이 같은 경우 참을 출력
  • != - 양변이 다를 때 참을 출력

위의 연산자들을 코드로 직접 확인해보겠습니다.

x = 15
y = 10
print(x == y)
>>> False
print(x != y) 
>>> True
print(x > y)
>>> True
print(x >= y)
>>> True
print(x < y)
>>> False
print(x <= y)
>>> False

예3

  • city는 빈문자열이나 False이기에 실행 되지 않는다.
  • city에 참과 거짓을 넣음으로써 프로그램을 제어할수 있기에 제어문이라고 한다.
city = '' # 만약 문자열안에 값이 있다면 else문이 실행되겠죠!ㅎㅎ
if city: 
    print('You are in:', city)
else:
    print('Please eneter your city')
>>> Please eneter your city

예3

  • city2는 빈문자열이 아니니 if 구문이 실행됩니다.
city2 = 'seoul'
if city2:
    print('You are in:', city2)
else:
    print('Please eneter your city')
>>> You are in: seoul

논리 연산자 📕

조건을 풍부하게 체크할 수 있도록 도와주는 논리연사자를 알아봅시다.

  • and (논리 곱): and 연산자는 두 개 이상의 조건이 모두 참일 때만 참을 반환합니다. 예를 들어, A and B는 A와 B가 둘 다 참일 때만 참을 반환합니다.

  • or (논리 합): or 연산자는 두 개 이상의 조건 중 하나라도 참이면 참을 반환합니다. 예를 들어, A or B는 A 또는 B 중 하나라도 참이면 참을 반환합니다.

  • not (논리 부정): not 연산자는 주어진 조건을 반전시킵니다. 예를 들어, not A는 A가 거짓이면 참을 반환하고, A가 참이면 거짓을 반환합니다. 반대로 출력한다고 생각하시면 됩니다.

a = 75
b = 40
c = 10
# a > b > c , # a > b > c , and는 모두 만족해야 True가 나온다.
print('and:', a > b and b > c) 
>>> and : True
# or은 하나만 만족해도 True가 나온다.
print('or :', a > b or b > c) 
>>> or : True
# a > b 인것은 True이지만 not이기에 False가 나온다.
print('not :', not a > b) 
>>> not : False
# 반대로 출력해준다고 생각하면 쉽다.
print('not :', not b > c) 
>>> not : False
print(not True)
>>> False
print(not False)
>>> True

산술, 관계, 논리 우선순위 📕

산술 > 관계 > 논리
위와 우선순위가 높은 순서대로 규칙을 적용해서 계산하시면 됩니다.

print('e1 : ', 3+12 > 7+3)
>>> e1 :  True
print('e2 : ', 5 + 10 *3 > 7 + 3 * 20)
>>> e2 :  False
print('e3 : ', 5 + 10 > 3 and  7 + 3 ==10)
>>> e3 :  True
print('e4 : ', 5 + 10 > 0 and not 7 + 3 == 10)
>>> e4 :  False

다음에는 여러개의 조건이 있는 if 구문을 살펴보겠습니다.

예5

  • 복수의 조건이 모두 참일 경우에 실행 (and)
score = 90
score2 = 'A'
if score >= 90 and score2 == 'A':
    print('Pass') # 들여쓰기(indent) 중요!!
else:
    print('Fail')
>>> Pass

예6

  • 복수의 조건이 모두 참일 경우에 실행 (and)
id1 = 'vip'
id2 = 'admin'
grade = 'gold'
if id1 == 'vip' or id2 == 'admin':
    print('관리자 입장')
>>> 관리자 입장
if id2 == 'admin' and grade == 'gold':
    print('최상위 관리자')
>>> 최상위 관리자

다중 조건문 📕

다중 조건문은 하나 이상의 if, elif (else if의 줄임말), 그리고 else 절을 사용하여 여러 조건을 연달아 검사할 때 유용합니다. 위에서 아래로 순서대로 조건을 검사하며 처음으로 참인 조건을 만나면 코드를 실행하고 다중 조건문을 빠져나갑니다. 조건문을 좀더 세밀하게 만들 수 있겠죠.

num = 90
if num >= 90:
    print('Grade : A')
elif num >= 80:   # else는 모아니면 도, elif는 조건문을 계속 붙일 수 있다.
    print('Grade : B')
elif num >=  70:
    print('Grade : C')
else:
    print('과학')
>>> Grade : A

중첩 조건문 📕

  • 중첩 조건문 - if문 안에 if가 있는것입니다.
  • 등급이 A인 사람만 장학금을 받는다, 그 중에서 90점이 넘는사람은 100%, 80점이상은 80% 나머지는 50%를 받고, 등급이 A가 아닌 사람은 장학금이 없다.
grade = 'A'
total = 95
if grade == 'A':  
    if total >= 90:
        print('장학금 100%') # grade가 A인 사람중에 total 90이상인 사람은 장학금 100%
    elif total >= 80 : # else if = elif
        print('장학금 80%')
    else:
        print('장학금 50%')
else:
    print('장학금 없음')
>>> 장학금 100%

in, not in 📕

in은 알고계시겠지만 not in과 함께 한번더 보겠습니다.

q = [10, 20, 30]
w = [70, 80, 90, 100]
e = {'name' : 'Lee', 'City' : 'Seoul', 'grade' : 'A'}
r = (18, 12, 14)
print(15 in q) # q안에 15가 있으면 True를 반환 없다면 False반환
>>> False
print(90 in w)
>>> True
print(12 not in r)
>>> False
print('name' in e)
>>> True
print('Seoul' in e)
>>> False
# Seoul은 키가 아니라 값이라 .valuse를 해준다.
# e.values() -  키는 버리고 값만 가져온다
print('Seoul' in e.values())
>>> True

오늘은 True로 판단하는 것들 False로 판단하는 것들, if else구문, 다양한 연산자들과 다중 조건문 등을 배워보았습니다. 기초 문법을 모르고 복잡한 조건문을 맞닥뜨리면 당황할 수 있습니다. 반복 학습을 통해 공부합시다. 😎

출처 : 인프런

profile
ice blue

0개의 댓글