01. Python 기초- 제어문

ID짱재·2021년 2월 4일
0

Python

목록 보기
3/39
post-thumbnail

🌈 제어문

🔥 조건문 : if / elif / else

🔥 반복문 : while / for

1. 조건문

1) if문 구조

  • if와 else를 사용하여 참과 거짓을 판단하는 문장임
  • 조건이 참이면 if문의 블록을 실행하고, 조건문이 거짓이면 else문의 블록을 수행함
  • if문은 else문 없이 독립적으로 사용 가능
  • if나 else문 아래 수행하는 body는 탭으로 들여쓰기함

2) 비교연산자, 논리연산자

  • 비교연산자(<, >, ==, !=, >=, <=) : 크다, 작다, 같거나 크다, 같거나 작다, 같지 않다, 같다 비교
  • 논리연산자(or, and, not) :
    • or : 하나라도 참이면 참
    • and : 모두가 참이여야지만 참
    • not : 거짓일 때 참

✍🏻 python

# 비교 연산자
a = 3
b = 6
print(a>b) # False
print(a<b) # True
print(a==b) # False
print(a!=b) # True
print(a>=b) # False
print(a<=b) # True
# 예시1
money = 2000
if money >= 3000:
    print("택시를 타고 가라")
else:
    print("걸어가라") # 실행 : 걸어가라
# 논리 연산자
#
# 예시2
money = 2000
card = True
if money >= 3000 or card:
    print("택시를 타고 가라") # 실행 : 택시타고가라
else:
    print("걸어가라") 
# x in something, x not in something 
# something(리스트,튜플,문자열)에 x의 포함여부 bool값으로 돌려줌
str_1 = "python"
print("p" in str_1) # True
print("z" not in str_1) # True
# 리스트 예시
list_1 = [1,2,3,4,5]
print(1 in list_1) # True
print(6 not in list_1) # True
# 튜플 예시
tuple_1 = ("a", "b", "c")
print("a" in tuple_1) # True
print("d" not in tuple_1) # True
# 리스트 예시
pocket = ['paper', 'cellphone', 'money']
if 'money' in pocket: # pocket 리스트에 mone가 있으면 참
    print("택시를 타고 가라") # 실행 : 택시를 타고 가라
else:
    print("걸어가라")
# if문에서 아무것도 하지 않도록 하고 싶을 때 : pass
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket: # pocket 리스트에 money가 있으면 아무것도 하지 않음
    pass 
else:
    print("카드를 꺼내라")

3) elif문

  • 다양한 조건을 비교하기 위해서는 if, else로는 간결하게 표현하기 어려움(계속 중첩되는 if문이 발생함)
  • if가 거짓이 되었을 때, elif문의 조건이 참인지 간결하게 비교해 볼 수 있음

✍🏻 python

# if & else로만 조건문 생성 : 길어짐
pocket = ['paper', 'handphone']
card = True
if 'money' in pocket:
    print("택시를 타고가라")
else:
    if card:
        print("택시를 타고가라") # 실행 : 택시를 타고 가라
    else:
        print("걸어가라")
# elif문을 통해 위에 조건문 표현 : 똑같이 작동함
pocket = ['paper', 'cellphone']
card = True
if 'money' in pocket:
    print("택시를 타고가라")
elif card: 
    print("택시를 타고가라") # 실행 : 택시를 타고 가라
else:
    print("걸어가라")
# if문 간결하게 표현(if문 한줄로 표현)
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket: pass # 실행 : pass(아무것도 안함)
else: print("카드를 꺼내라")
# 조건부 표현식 : 참인 경우 실행할 것 if 조건문 else 거짓일 경우 실행할 것
score = 100
if score >= 60:
    message = "success"
else:
    message = "failure"
# 위 if문 조건부 표현식으로 변환
message = "success" if score >= 60 else "failure"

4) 조건문 간소화

  • 조건문에서 실행될 body가 한 줄인 경우, 줄바꿈을 하지 않고 간략하게 표현할 수 있음

✍🏻 python

score = 90
if score > 80: result = "Success"
else: result = "Fail"
print(result) # Success
  • 조건부 표현식(Conditional Expression) : if ~ else문을 한줄에 작성할 수 있음

✍🏻 python

score = 85
result = "Succes" if score >= 70 else "Fail"
print(result) # Success

5) 조건문에서의 부등호

  • Python은 다른 언어와 차별점으로 조건문 안에서 수학의 부등식을 그대로 사용할 수 있음
  • 예를 들어, x > 0 and x < 20을 Python에서는 0 < x < 20으로 쓸 수 있음

✍🏻 python

# 일반적인 조건문에서의 부등식
x = 15
if x > 0 and x < 20:
  print("x는 0 이상 20 미만의 수 입니다.") # x는 0 이상 20 미만의 수 입니다.
# Python에서는 수학 부등식도 사용 가능
y = 15
if 0 < y < 20:
  print("y는 0 이상 20 미만의 수 입니다.") # y는 0 이상 20 미만의 수 입니다.

2. 반복문

1) while문 & for문

  • 조건이 true일 때까지 body를 계속 수행함
  • 반복되는 코드가 있다면 항상 반복문을 떠올리쟈!
  • break 활용 : break를 만나면 반복문 탈출
  • continue 활용 : continue를 만나면 해당 조건을 무시하고 다시 반복을 이어감

✍🏻 python

# 0~3까지 출력하는 if문
i = 0 
if i <= 3: # now i = 0
    print(i)
    i = i + 1
if i <= 3: # now i = 1
    print(i)
    i = i + 1
if i <= 3: # now i = 2
    print(i)
    i = i + 1
if i <= 3: # now i = 3
    print(i)
    i = i + 1
if i <= 4: # now i = 4
    print(i) # 실행안됨 -> if문 종료
    i = i + 1
# 위에 if문 while 문으로 바꾸기
i = 0
while i <= 4:
    print(i)
    i = i + 1
# 반복문 기본
v1 = 1
while v1 < 11:
    print("vq is :", v1) # body
    v1 += 1
for v2 in range(1,11):
    print("v2 is :", v2) # body
# while문 강제로 빠져나가기 : break
coffee = 10
while True:
    money = int(input("돈을 넣어 주세요: "))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee -1
    elif money > 300:
        print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
        coffee = coffee -1
    else:
        print("돈을 다시 돌려주고 커피를 주지 않습니다.")
        print("남은 커피의 양은 %d개 입니다." % coffee)
    if coffee == 0:
        print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
        break
# for문 강제로 빠져나가기 : break
coffee = 10
for i in range(coffee):
    money = int(input("돈을 넣어주세요:"))
    if money == 300:
        print("커피를 줍니다.")
        coffee = coffee - 1
    elif money > 300:
        print("거스름돈 %d를 주고 커피를 줍니다." % (money -300))
        coffee = coffee - 1
    else:
        print("돈을 다시 돌려주고 커피를 주지 않습니다.")
        print("남은 커피의 양은 %d개 입니다." % coffee)
    if coffee == 0:
        print("sold out")
        break
# 해당 조건을 만나면 while문 무시하고 다시 반복하기 : continue
# 짝수(2로 나눠서 나머지가 없음)일 때 넘어가고, 다시 반복문 진행
a = 0
while a < 10:
    a = a + 1
    if a % 2 == 0: continue
    print(a)
# 해당 조건을 만나면 for문 무시하고 다시 반복하기 :  : continue
marks = [90, 25, 67, 45, 80]
number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60:
        continue # makrks의 요소 중 60점 미만이면 넘어감
    print("%d번 학생 축하합니다. 합격입니다. " % number)

2) range() 함수

  • for문은 숫자 리스트를 자동으로 만들어 주는 range 함수와 함께 사용하는 경우가 많음
  • 다른 range(num1,num2,num3)는 3개의 파라미터를 넣을 수 있음
    • num1: 시작할 숫자
    • num2: 끝 숫자(끝 숫자 -1까지 범위로 설정됨)
    • num3: 범위에 간격 설정(step)

✍🏻 python

# # 반복문 선언1
# for data in 리스트변수:
#     실행코드
# # 반복문 선언2
# for data in range(반복횟수):
#     실행코드
#반복문 기본1 : 리스트 내 요소를 한개씩 출력 : / <- 한줄씩 출력
for index in ["pyhton", "java", "golang"]:
    print(index) # python /  # java / # golang
#반복문 기본1 : 리스트 내 요소 수 많큼 반복
for index in ["pyhton", "java", "golang"]:
    print("Hello") # # Hello / # Hello / # Hello
#반복문 기본2 : range함수
for i in range(3):
    print(i) 
# range(시작숫자, 끝숫자, 스텝) : 끝숫자는 포함하지 않고, 숫자를 1개만 적으면 0~적은숫자까지로 정함
for i in range(0,3,1):
    print(i) # 0 / #1 / #2
#0부터 9까지 숫자 중 2개 간격씩 뽑기 
for i in range(0,10,2): 
    print(i) # 0 / # 2 / 4#  / # 6 / #8
# 1부터 10까지 합한 값은?
sum = 0
for i in range(1,11):
    sum += i
print(sum) # 55
# 활용1
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
    if marks[number] < 60: 
        continue
    print("%d번 학생 축하합니다. 합격입니다." % (number+1))
# 활용2 : 구구단
for i in range(2,10):        # ①번 for문
    for j in range(1, 10):   # ②번 for문
        print(i*j, end=" ") 
    print('') 

3) 리스트 내포 활용

  • 리스트 안에 for문을 포함하는 리스트 내포(List comprehension)를 사용하면 좀 더 편리하고 직관적임

✍🏻 python

# 리스트 내포
a = [1,2,3,4]
result = []
for num in a: # 여기서 num은 1,2,3,4가 순차적으로 들어옴
    result.append(num*3) # num*3을 result 리스트에 하나씩 추가시킴
print(result) # [3, 6, 9, 12]
# 리스트 내포 + if문
# "if num % 2 == 0" 이 참이라면, "num * 3 for num in a" 실행
a = [1,2,3,4]
result = [num * 3 for num in a if num % 2 == 0] 
print(result) # [6, 12]

4) while ~ not in [list] 구문

  • [list] 에 포함되지 않았다면, 반복문 계속 수행
  • 이 방법으로 잘못된 입력값을 받았을 경우, 반복문에서 빠져나갈수없게 할 수 있음
  • list에서 1개의 값을 랜덤으로 뽑아주는 함수로 random.choice을 활용
  • try 가위바위보 게임

✍🏻 python

import random
n = int(input('가위, 바위, 보 게임을 시작합니다. 몇 판을 진행할까요? : '))
for i in range(n):
    user_select = None
    choice_list = ['가위', '바위', '보']
    while user_select not in choice_list:
        user_select = input('가위, 바위, 보 중에 하나를 고르세요. : ')
        pc_select = random.choice(choice_list)
    print(f'{i+1}번째 게임 : 당신은 {user_select}, 저는 {pc_select} 입니다. ')
  • 🙌 실행의 종료 조건이 분명할 때는 while문 사용
  • 🙌 실행의 반복 횟수가 분명할 때는 for문 사용
profile
Keep Going, Keep Coding!

0개의 댓글