Note 들여쓰기가 아주 중요하다!!

1. If 조건문

  • 만약 “조건1”이 참(True)이면 “수행1”을 하고,
    그렇지 않으면 “조건2”가 참(True)일 때는 “수행2”
    그 외에는 “수행3”을 하라.

      if '조건1':
          '수행1'
      elif '조건2':
          '수행2'
      else: 
          '수행3'
    
  • 한 줄로 표현할 수 있다.
    만약 ‘조건’이 참(True)이면 a이고 그렇지 않으면 b이다.

      '수행1' if '조건1' else '수행2'
    

Examples

예제 1. 학점 계산하기
name = 'Park Ji Soo'
score = 76

if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'F'

print(name+'님의 학점은 '+grade+' 입니다.')
Park Ji Soo님의 학점은 C 입니다.
예제 2. 재고 확인하기
snack = '꿀꽈배기'
snacks = {'허니버터칩':1, '꼬깔콘':3, '양파링':10, '매운새우깡':4}

if snack not in snacks.keys():
    print('현재 '+ snack + '의 재고는 없습니다.')
else:
    print('현재 '+snack+'은 '+str(snacks[snack])+'개 남아있습니다.')
    
snack = '매운새우깡'
snacks = {'허니버터칩':1, '꼬깔콘':3, '양파링':10, '매운새우깡':4}

if snack not in snacks.keys():
    print('현재 '+ snack + '의 재고는 없습니다.')
else:
    print('현재 '+snack+'은 '+str(snacks[snack])+'개 남아있습니다.')
재 꿀꽈배기의 재고는 없습니다.
현재 매운새우깡은 4개 남아있습니다.
예제 3. 생년월일(8자리)을 통해 청소년인지 아닌지 구분하기.
(청소년은 만 9세이상 만 24세 이하인 사람을 말한다.)
name = 'Kim Young Hee'
birth = '20010315'

age = 2022 - int(birth[:4])

if 9 <= age <= 24:
    print(name + '님은 만 ' + str(age) + '세로 청소년입니다.')
else:
    print(name + '님은 만 ' + str(age) + '세로 청소년이 아닙니다.')
Kim Young Hee님은 만 21세로 청소년입니다.

2. 반복문

1) For 반복문

  • 리스트/튜플/문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 “수행1”, “수행2”를 한다.

      for '변수' in '리스트/튜플/문자열':
          '수행1'
          '수행2'
          ...
    
  • 한줄로 표현이 가능하다.

      ['수행1' for '변수' in '리스트/튜플/문자열']
    
  • 만약 ‘변수’에 상관없는 반복일 경우에는 _로 대체해도 가능하다.

    Example. 'HA' 10번 반복해서 한 줄로 출력하기
      for _ in range(10):
          print('HA', end=' ')
    
      HA HA HA HA HA HA HA HA HA HA
    

2) While 반복문

  • “조건”을 만족하는 동안 “수행1”을 반복한다.

      while '조건':
          '수행1'
    
  • 무한 루프: “수행1”을 무한으로 반복한다. 빠져나오기 위해서는 조치가 필요하다.

    • break: 루프를 중단하고 빠져나온다.
    • continue: 처음으로 돌아간다.
      while True:
          '수행1'
    
    • STEP 1. 변수 i에 초기값을 설정한다.
    • STEP 2. 변수 i를 변경한다.
    • STEP 3. 어떤 조건을 만족하면 break로 빠져나온다.

3) Examples

예제 1. 2의 거듭제곱 차례대로 n개 출력하기
n = 10

# For문 (한 줄)
lst = [2 ** i for i in range(n)]
print(lst)

# For문
lst = []
for i in range(n):
    lst.append(2 ** i)
    
print(lst)

# While문
i = 0
lst = []
while i < n:
    lst.append(2 ** i)
    i += 1

print(lst)

# While문(무한 루프)
i = 0
lst = []
while True:
    if i == n:
        break
    
    lst.append(2 ** i)
    i += 1
    
print(lst)
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
예제 2. 1부터 n까지의 3과 5의 최소공배수 구하기
n = 100

# For문(한 줄)
lst = [i for i in range(1,n+1) if (i % 3 == 0) and (i % 5 == 0)]
print(lst)

# For문 
lst = []
for i in range(1, n+1):
    if (i % 3 == 0) and (i % 5 == 0):
        lst.append(i)

print(lst)

# While문
i = 0
lst = []
while i < n:
    i += 1
    if (i % 3 == 0) and (i % 5 == 0):
        lst.append(i)

print(lst)

# While문(무한 루프)
i = 0
lst = []
while True:
    i += 1
    if (i % 3 == 0) and (i % 5 == 0):
        lst.append(i)
        
    if i == n:
        break

print(lst)
[15, 30, 45, 60, 75, 90]
[15, 30, 45, 60, 75, 90]
[15, 30, 45, 60, 75, 90]
[15, 30, 45, 60, 75, 90]
예제 3. 행운의 로또 번호 생성하기(1 ~ 50, 7자리, 비복원추출)

import random에서 randint(start, end)함수를 이용하자.
randint함수는 start부터 end 사이(end 포함안됨)의 정수를 랜덤으로 하나를 뽑는다.

import random 

# For문(한 줄) - 복원 추출
lotto = [random.randint(1, 50) for i in range(7)]
lotto.sort()
print(lotto)

# For문 - 비복원 추출
lotto = []
for _ in range(100):
    num = random.randint(1, 50)
    if num in lotto:
        continue
    else:
        lotto.append(num)
    
    if len(lotto) == 7:
        lotto.sort()
        break
    
print(lotto)

# While문 - 비복원 추출
lotto = []
while len(lotto) < 7:
    num = random.randint(1, 50)
    if num in lotto:
        continue
    else:
        lotto.append(num)
        lotto.sort()
        
print(lotto)

# While문(무한 루프) - 비복원 추출
lotto = []
while True:
    num = random.randint(1, 50)
    if num in lotto:
        continue
    else:
        lotto.append(num)
    
    if len(lotto) == 7:
        lotto.sort()
        break

print(lotto)
[5, 6, 11, 12, 13, 47, 49]
[3, 6, 11, 18, 24, 39, 49]
[8, 14, 33, 35, 38, 42, 43]
[1, 5, 20, 23, 33, 35, 42]

Reference

댓글남기기