1. 조건문 if

1. if문이란?

if문이란 특정 조건일 때 코드를 실행시키게 하는 조건 문법이다.

# 기본 형태
if 조건 :
  실행할 코드

2. if문 문법과 주의 사항

if문을 작성할 땐 2가지를 주의해야한다.

  1. 조건문 마지막에 콜론 (:) 추가.

  2. 조건문 다음 코드 작성시 들여쓰기 통일화 (2칸 또는 4칸) ➡️ 통일되지 않으면 오류가 발생한다.

    ea = int(input("붕어빵 몇개 사실껀가요?"))
    
    if ea > 3 :
        print("개당 1800원 입니다.")
    if ea <= 3 :
        print("개당 2000원 입니다.")
      
    [출력]
    붕어빵 몇개 사실껀가요?5
    개당 1800원 입니다.

3. if문의 흐름 (작동 원리)

코드는 위에서 아래로 순서대로 작동한다.

ea = int(input("붕어빵 몇개 사실껀가요?")) # 1) ea에 변수 입력 받음.

if ea > 3 : # 2) 조건에 성립하(True)면
    print("개당 1800원 입니다.") # 3) if문 안에 코드 실행.
if ea <= 3 : # 4) 조건에 성립하지 않으(False)면
    print("개당 2000원 입니다.") # 5) 다른 if문 (이것 또한 그 if 문과 같은 것인지 확인 필요) 또는 else 문 안에 코드 실행.

4. if 중첩문

mistery_num = 10

if mistery_num > 5 :
    if mistery_num < 15 :
        print("의문의 숫자는 5보다 크고 15보다 작습니다.")
        
[출력]
의문의 숫자는 5보다 크고 15보다 작습니다.

5. if ~ else 문법

if문과 마찬가지로 콜론과 들여쓰기에 신경써서 작성해야하며, if ~ else문을 이용하면 아까 본 붕어빵 판매 예시를 좀 더 깔끔하고 간결하게 코드를 작성할 수 있다.

ea = int(input("붕어빵 몇개?"))

if ea > 3 :
    print("개당 1800원 입니다.")
else :
    print("개당 2000원 입니다.")
    
[출력]
붕어빵 몇개?3
개당 2000원 입니다.

6. if ~ else문 흐름 (작동 원리)

  1. if 조건식에 맞다면(True) if문 안에 작성된 코드를 실행한다.

  2. if 조건식에 맞지 않는다면(False) else문 안에 작성된 코드를 실행한다.

7. 조건문의 조건 (True, False)

if문 안에 True, False, None과 같은 조건을 넣어 결과 값을 확인해본다. 한번 출력값을 보지 않고 미리 결과 값을 생각해보길 바란다.

# True
if True :
    print(True)
else :
    print(False)

# False
if False :
    print(True)
else :
    print(False)

# None
if None :
    print(True)
else :
    print(False)

# 0 (False)
if 0 :
    print(True)
else :
    print(False)

# 1 (True)
if 1 :
    print(True)
else :
    print(False)

# 'hello' → 모든 문자열은 True
if 'hello' :
    print(True)
else :
    print(False)

# '' → 빈 값은 False
if '' :
    print(True)
else :
    print(False)

# if not은 그 결과값 반대로.

[출력]
True
False
False
False
True
True
False

8. 조건식 여러 개 설정하기

조건식이 들어가는 곳에 여러개의 조건을 넣을 수도 있다. 그 조건들을 연결해주는 단어로는 and, or이 있다.

a, b = 10, 30

if a == 10 and b == 30 :
    print("조건에 동일합니다.")
else :
    print("조건에 동일하지 않습니다.")

if a == 10 or b == 30 :
    print("조건에 동일합니다.")
else :
    print("조건에 동일하지 않습니다.")

if a >= 10 and a < 20 :
    print("10보다 크고 20보다 작습니다.")

if 20 <= b < 40 :
    print("20보다 크고 40보다 작습니다.")
    
[출력]
조건에 동일합니다.
조건에 동일합니다.
10보다 크고 20보다 작습니다.
20보다 크고 40보다 작습니다.

9. elif ~ if문

if ~ else문 사이에 다른 조건문을 넣는 문장이다.
C언어에서는 elif가 아닌 그냥 if를 넣어서 사용했는데 혼동되지 않도록 주의해야겠다.

flavor = input("붕어빵 맛을 골라주세요. (팥, 슈크림, 잡채)")

if flavor == "팥" :
    print(f'{flavor}을(를) 선택하셨습니다.\n')
elif flavor == "슈크림" :
    print(f'{flavor}을(를) 선택하셨습니다.\n')
else :
    print(f'{flavor}을(를) 선택하셨습니다.\n')
    
[출력]
붕어빵 맛을 골라주세요. (, 슈크림, 잡채), 슈크림
팥, 슈크림을() 선택하셨습니다.

10. 예제

Q. 단어 a의 가운데 글자를 반환하는 코드

  • 조건 : 단어의 길이가 짝수라면 가운데 두글자를 출력하면 됩니다.

  • 입력값 1: "abcde"

  • 입력값 2: "qwer"

    a = input()
    
    cen = int(len(a)/2) # 문자열도 len 사용 가능.
    
    if len(a) % 2 == 0 :
        print(f'{a[(cen-1):(cen+1)]}')
    else :
        print(f'{a[cen]}')
        
    [출력]
    abcde
    c
    qwer
    we

2. 반복문 for

1. for문이란?

프로그래밍 언어에서 반복되는 작업을 간단하게 처리하기 위해서 사용하는 기능이다.

# 기본 형태
for 반복 조건 (횟수) :
	반복할 코드

2. for문 문법과 주의사항

for문에서도 if문에서와 같이 주의사항이 있다.

  1. 들여쓰기 기준을 코드 블록으로 한다.
    특정 동작을 위해 코드가 모여 있는 상태를 코드 블록이라고 한다.
    들여쓰기는 보편적으로 4칸이다. (Tab 한번)

  2. 반복 조건 (횟수) 이후에 콜론(:)을 추가한다.

for animal in ("rabit", "lion", "panda", "tiger") :
	print(f'Do you want to see the {animal}?')

for문에서 반복 조건 (횟수)는 for 변수 in range(횟수) :로 작성하며, '횟수'만큼 반복된다.

# 예시
for i in range(5):
    print("it's really repeating!")
    
[출력]
it's really repeating!
it's really repeating!
it's really repeating!
it's really repeating!
it's really repeating!

3. for문의 흐름 (작동 원리)

for i in range(5):
    print("it's really repeating!", i)
# i에는 0부터 임의의 숫자가 부여되고 i (loope index)가 count 됨에 따라 반복.

[출력]
it's really repeating! 0
it's really repeating! 1
it's really repeating! 2
it's really repeating! 3
it's really repeating! 4

4. for문에서 range()함수 활용하기

range 안에 횟수(정수)만 넣을 필요는 없다. 안에 범위를 지정할 수도 있다.

for i in range(4,10):
    print(i)
print("\n")

for j in range(4,10,2):	# 간격 설정도 가능.
    print(j)
print("\n")

for a in range(10,4,-1):	# 범위 지정을 큰 숫자, 작은 숫자 순으로 하고 -1 하면 역순.
    print(a)
print("\n")

for b in reversed(range(10)): # reversed도 가능.
    print(b)

[출력]
4
5
6
7
8
9

4
6
8

10
9
8
7
6
5

9
8
7
6
5
4
3
2
1
0

5. for문에서 시퀀스 객체로 반복하기

fruit = ["mango", "banana", "melon", "apple"]

for i in fruit:
    print(i)
print("\n")

for j in "닥스훈트":
    print(j, end='') # 일렬로 출력. 그냥 출력하면 한글자씩 세로로 출력. j라는 변수가 ""안에 들어있는 문자 갯수만큼 반복
print("\n")

for n in reversed("animal"): # 거꾸로 출력.
    print(n,end='')
    
[출력]
mango
banana
melon
apple


닥스훈트

lamina

6. 예제

Q1. 절대값 정수가 담긴 정수 변수와 그 정수의 부호를 차례대로 담은 부호 변수

두 변수를 이용해 실제 정수의 합을 구하기. (True : 양수, False : 음수)

# 나의 답
정수 = [10, 5, 8]
부호 = [True, False, True]
result = 0

for x in range(len(부호)):
    if 부호[x]:
        result += 정수[x]
    else:
        result -= 정수[x]

print(result)

# 강의 답= 0

for y, z in zip(부호, 정수):
    if y:+= z
    else:-= z

print()

[출력]
13

Q2. range 연습

for i in range(5, 16):
    print(i)

for j in range(1,10,1):
    print(j)

for x in range(20, 40, 2):
    print(x)
    
[출력]
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
20
22
24
26
28
30
32
34
36
38

Q3. 입력 받은 문자 길이만큼 출력

count = input()

for i in range(len(count)):
    print('i의 값은', end='.')
    print(i)
    
[출력]
i의 값은.0
i의 값은.1
i의 값은.2
i의 값은.3
i의 값은.4
i의 값은.5

Q4. revesed 연습

for i in reversed("Python"):
    print(i, end='.')
    
[출력]
n.o.h.t.y.P.

Q5. 2차원 배열 -1

오피스텔 = [ [201, 202], [301, 302], [401, 402] ]
for i in range(len(오피스텔)):
    print(f'{오피스텔[i][0]}호')
    print(f'{오피스텔[i][1]}호')
    print("----")
    
[출력]
201202----
301302----
401402----

Q6. 2차원 배열ㄹ -2

ohlc = [["open", "high", "low", "close"], [100, 110, 70, 100], [200, 210, 180, 190], [300, 310, 300, 310]]

for i in range(1,4):
    if ohlc[i][3] > 150:
        print(ohlc[i][3])
        
[출력]
190
310

3. 반복문 while

1. while문이란?

for문과 반복문이라는 점에서 공통점이 있지만 구조가 다르며 횟수가 정해져 있지 않은 반복문을 사용할 때 효과적이다.

2. while문 문법과 주의사항

  • while문 문법
    1) 초기식 (보통 변수 = 0)
    2) while 조건식 :
    3) 반복할 코드 (여러개 가능)
    4) 변환식 (변수 += 1) → 이게 없으면 무한 loop에 빠짐.
# 초기식
i = 0

while 조건식 :
	반복할 코드 (코드 블록)
    i += 1	# 여기서는 i ++ 사용이 안된다.
  • 들여쓰기는 4칸으로 동일하며 조건식 이후 콜론(:)이 필수다.

3. while문의 흐름 (작동 원리)

다른 조건문이나 반복문과 동일하게 위에서 아래로 코드가 진행된다.

초기식

while 조건식 :
	반복할 코드
    변화식

4. while문 조건식 증감, 감소

# 1. 기본적인 증가 유형
i = 1
while i < 5:
    print('you are getting old', i)
    i += 1

# 2. 기본적인 감소 유형
j = 5
while j > 0:
    print('you are getting young', j)
    j -= 1
    
[출력]
you are getting old 1
you are getting old 2
you are getting old 3
you are getting old 4
you are getting young 5
you are getting young 4
you are getting young 3
you are getting young 2
you are getting young 1

5. while문을 조심스럽게 사용해야되는 이유

마지막에 증감식을 적어주지 않으면 무한 loop에 빠져 과도한 리소스를 소모하게 된다.
하지만 잘 사용한다면 for문보다 효율적으로 사용할 수 있다.

  • while문이 for문보다 강점인 부분 : 반복하는 횟수가 정해져 있지 않을 때
import random # random 도구 상자 소환

# random() : 항상 임의의 실수 나옴. random(시작값, 끝값)은 범위 내 임의의 숫자 나옴.

i = 0
while i != 4:
    i = random.randint(1,6)
    print(i) # i가 4 아니라면 반복, 4 나오면 종료.

[출력]
1
5
3
1
5
6
6
6
3
3
4

6. continue, break

while반복문에서 countinue, break 같은 명령어를 사용하여 반복을 건너 뛰고 진행할 것인지 반복을 중단하고 반복문에서 나올 것인지 정할 수 있다.

# continue
i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        continue
    print(i, end=' ')

# for문에서 응용해보기
for i in range(10):
    if i % 2 == 0:
        continue
    else:
        print(i, end=' ')
        
[출력]
1 3 5 7 9 	# 홀수만 출력하는 코드
1 3 5 7 9 

# break
i = 0
while True:
    print(i, end=' ')
    i += 1
    if i == 10:
        break

# for문에서 응용해보기
for i in range(100):
    print(i, end=' ')
    if i == 10:
        break
        
[출력]
0 1 2 3 4 5 6 7 8 9 	# 증감식이 있지만 조건식에서 무한이기 때문에 break가 없었다면 무한 loop에 빠졌을 것이다.
0 1 2 3 4 5 6 7 8 9 

7. while문에서의 else

while문에서도 if문에서 사용되던 else사용이 가능하다.
while문이 break에 의해 종료되고 나왔을 때 작동될 코드를 넣어주면 된다.

onion = 10
while onion > 0:
    print("onion", onion, "개 남았습니다.")
    if onion == 0:
        break
    onion -= 1
else:
    print("양파 다 팔렸습니다.")
    
[출력]
onion 10 개 남았습니다.
onion 9 개 남았습니다.
onion 8 개 남았습니다.
onion 7 개 남았습니다.
onion 6 개 남았습니다.
onion 5 개 남았습니다.
onion 4 개 남았습니다.
onion 3 개 남았습니다.
onion 2 개 남았습니다.
onion 1 개 남았습니다.
양파 다 팔렸습니다.

8. 예제

Q1. 콜라츠 하는 사람은 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다고 추측했다.

  • 작업

    1. 입력된 수가 짝수라면 2로 나눈다.

    2. 입력된 수가 홀수라면 3을 곱하고 1을 더한다.

    3. 위 결과로 나온 수에 같은 작업을 반복하고 1이 될때까지 진행한다.
      ex) 입력된 수 6 : 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1

      i = int(input("정수를 입력해 주세요. "))
      count = 0
      while i > 1:
          if i % 2 == 0:
              i = int(i / 2)
              print(i, end=' ')
              count += 1
          else:
          	i = int((i * 3) + 1)
              print(i, end=' ')
              count += 1
      print('\n')
      print(f'{count}번')
        
      정수를 입력해 주세요. 7
      22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 
      
      16

Q2. 증감식 변경

i = 10

while i < 19:
    print(i, end=' ')
    i += 2
    
[출력]
10 12 14 16 8

Q3. 100 이상의 자연수 중 가장 작은 23의 배수 출력

i = 100
while i >= 100:
    if i % 23 != 0:
        i += 1
    if i % 23 == 0:
        break
print(i)

[출력]
115

<참고 자료>

  • [오즈스쿨 스타트업 웹 개발 초격차캠프 백엔드 Python 강의]
profile
백엔드 코린이😁

0개의 댓글