Python 공부 | 조건문(if, elif, else) 반복문(for, while)

2024. 12. 11. 20:30·Python

 

 조건문 

  • if, elif(else if의 줄임말), else 키워드 사용
  • 특정 조건이 참(True)인 경우에만 특정 코드 블록을 실행 (if, elif, else 중 하나만 실행)
  • 파이썬은 들여쓰기를 통해 블록을 식별하므로 들여쓰기 잘 하는 게 중요함
  • 조건이 여러개면 if 쓰고 elif 여러개 쓰면 됨
 x = 10
if x > 0:
	print("양수입니다.")     # if는 조건이 참일 때 실행될 코드
elif x < 0:
	print("음수입니다.")	    # elif는 다른 조건이 참일 때 실행될 코드
else:
	print("0입니다.")	    # else는 위의 조건이 모두 거짓일 때 실행될 코드
# 들여쓰기의 중요성, 이렇게 블록 구분이 가능함
x = 10
if x > 5:
    print("첫 번째 블록 시작")
    if x < 15:
        print("두 번째 블록 시작")
else:
    print("첫 번째 블록 끝")

 

비교 연산자

  • > : 초과
  • < : 미만
  • >= : 이상
  • <= : 이하
  • == : 같음
  • != : 같지 않음

논리 연산자

  • and : 모두 참일 때 참
  • or : 하나 이상이 참일 때 참
  • not : 조건을 부정

조건문 예시

# and, or, not을 통한 다중 조건식
x = 10
y = 7

if x > 5 and y < 10:
    print("x는 5보다 크고, y는 10보다 작습니다.")

if x < 5 or y > 10:
    print("x는 5보다 작거나, y는 10보다 큽니다.")

if not (x == 5):
    print("x는 5와 같지 않습니다.")
    

# 조건문 중첩
x = 10

if x > 0:
    if x % 2 == 0:
        print("양의 짝수입니다.")
    else:
        print("양의 홀수입니다.")
else:
    print("음수 또는 0입니다.")
    

# 간략한 한줄 표현
x = 10
result = "양의 짝수" if x > 0 and x % 2 == 0 else "음수 또는 0"
print(result)

 

실전 사용 예시

# 판매량에 따른 생산량 결정 예시
sales = 1000

if sales > 1000:
    print("추가 생산이 필요합니다.")
elif sales <= 1000:
    print("현재 생산량이 적당합니다.")

 

 


 반복문 (for) 

  • 리스트, 튜플, 문자열 등과 같은 반복 가능한(iterable) 데이터 타입으로 순회함
  • while보다 for을 더 자주 씀
  • for문 기본 구조
for 변수 in 반복할_데이터:
    코드_블록

 

연산자

  • == : 등호 (= 는 변수 할당에 사용되었으므로)
  • * : 곱하기
  • / : 나누기
  • + : 더하기
  • - : 빼기
  • % : 나눈 나머지
  • // : 나눈 몫

for문 기본 사용법

  • 리스트 순회하기
  • 문자열 순회하기
  • range함수와 함께 사용하기
  • 딕셔너리 순회하기
# 리스트 순회
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
    
' ' '
apple
banana
cherry
' ' '


# 문자열 순회
for letter in "hello":
    print(letter)
    
' ' '
h
e
l
l
o
' ' '


# range 함수와 함께 사용
for i in range(5):
    print(i)
    
' ' '
0
1
2
3
4
' ' '


# 딕셔너리 순회
person = {"name": "John", "age": 30, "city": "New York"}
for key, value in person.items():
    print(key, " : ", value)
    
' ' '
name  :  John
age  :  30
city  :  New York
' ' '

 

range 함수

  • 연속된 정수를 생성하는 데 사용되는 내장 함수
  • 주로 반복문에 사용되며, 특히 for 루프와 자주 사용됨
    • start (시작값): 순차적인 정수 시퀀스의 시작 값. 생략 가능, 기본값은 0
    • stop (끝값): 순차적인 정수 시퀀스의 끝 값. 필수 지정되어야 함. 단, 실제 생성되는 마지막 숫자는 이 값보다 작음.
      이게 헷갈리면, 끝값이 원래 6일 때 5+1 같은 식으로 써두는 방법도 있음 (5까지 출력된다는 걸 스스로 인지하기 위해)
    • step (증가값): 각 숫자 사이의 간격. 생략 가능, 기본값은 1
range(stop)
range(start, stop)
range(start, stop, step)

# 둘의 결과 값은 같음
range(3) = range(0,3,1)


# 사례 1: range(stop)
# 0부터 시작하여 5 이전까지의 정수 시퀀스 생성
for i in range(5):
    print(i, end=' ')
    
' ' '
0 1 2 3 4
' ' '


# 사례 2: range(start, stop)
# 2부터 시작하여 7 이전까지의 정수 시퀀스 생성
for i in range(2, 7):
    print(i, end=' ')
    
' ' '
2 3 4 5 6
' ' '


# 사례 3: range(start, stop, step)
# 1부터 시작하여 10 이전까지 2씩 증가하는 정수 시퀀스 생성
for i in range(1, 10, 2):
    print(i, end=' ')
    
' ' '
1 3 5 7 9
' ' '

 

for과 조건문 함께 사용하기

# 1부터 10까지의 숫자 중 짝수만 출력
for i in range(1, 11):
    if i % 2 == 0:
        print(i)


# 조건문과 반복문을 복합적으로 활용하여 1부터 100까지의 숫자 중 3의 배수 출력
for i in range(1, 101):
    if i % 3 == 0:
        print(i)

# if문 안 쓰고 이렇게 해도 3의 배수 출력됨. 3으로 시작해서 3간격으로.
for i in range(3,101,3):
	print(i)


# 리스트에서 특정 값 걸러내기
# 리스트에서 짝수만 골라내어 새로운 리스트에 저장한 후 출력
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
    if num % 2 == 0:
        even_numbers.append(num)
print(even_numbers)


# 조건문과 반복문을 복합적으로 활용하여 구구단 출력
for i in range(2, 10):
    print(i,"단:")
    for j in range(1, 10):
        print(i, "x", j, " = ", i * j)


# 조건문과 반복문을 복합적으로 활용하여 별표로 직각 삼각형 그리기
size = 10 # 삼각형의 크기를 입력

for i in range(1, size + 1): # 직관적으로 알아보게 size+1로 range 지정
    print("*" * i)


# 문자열에서 특정 문자 제거하기
# 문자열에서 "o"를 제외한 모든 문자를 새로운 문자열에 추가하여 출력
sentence = "Hello World"
result = ""
for char in sentence:
    if char != "o":
        result += char  # result = result + char의 의미
print(result)

' ' '
Hell Wrld 
' ' '


# 딕셔너리에서 특정 조건에 맞는 항목 출력하기
# 딕셔너리에서 값이 25보다 큰 경우에 대해 이름과 함께 메시지를 출력
ages = {"John": 30, "Jane": 25, "Doe": 35, "Alice": 20}
for name, age in ages.items():
    if age > 25:
        print(name, " is older than 25")

 

이중 for문

# 구구단 출력하기
for i in range(2, 10):
    for j in range(1, 10):
        print(i, "x", j, "=", i*j)

# 별(*)로 삼각형 만들기
size = 5
for i in range(size):
    for j in range(i + 1):
        print("*", end="")
    print()
    
# 별(*)로 역삼각형 만들기
size = 5
for i in range(size, 0, -1):
    for j in range(i):
        print("*", end="")
    print()

 

실전 예시

  • 데이터 정제 및 전처리 (결측치, 이상치 처리)
# 결측치 처리 예시
data = [10, 20, None, 30, 40, None, 50]
cleaned_data = []
for d in data:
    if d is not None:
        cleaned_data.append(d)
print(cleaned_data)
  • 통계 계산
# 평균 계산 예시
data = [10, 20, 30, 40, 50]
total = 0
for d in data:
    total += d
mean = total / len(data)
print("Mean:", mean)
  • 데이터 탐색
# 특정 조건을 만족하는 데이터 찾기 예시
data = [10, 20, 30, 40, 50]
threshold = 25
for d in data:
    if d > threshold:
        print("Value greater than", threshold, "found:", d)
  • 모델 평가
# 모델 성능 평가 예시
true_values = [1, 0, 1, 0, 1]
predicted_values = [0, 0, 1, 0, 1]
correct_predictions = 0
for true, pred in zip(true_values, predicted_values):
    if true == pred:
        correct_predictions += 1
accuracy = correct_predictions / len(true_values)
print("Accuracy:", accuracy)
  • 반복적인 작업 자동화

 


 반복문 (while) 

  • while문은 조건문과 반복문의 조합. 조건을 만족하는 동안 코드 블록을 반복적으로 실행
  • 특정 조건이 참(True)일 때에만 실행, 거짓(False)될 때까지 반복 `무한반복 주의!`
  • for 사용 권장.. 최대한 많이 뽑아야 할 때도 for에 range로 100만 넣어버리는게 나음. 컴퓨터 과부하 올 일 없음
  • while문 기본 구조
while 조건:
    코드_블록
  • 여기서 조건은 불리언(boolean) 값(True 또는 False)을 반환하는 표현식

while문 기본 사용방법

# 1부터 5까지 출력하기
i = 1
while i <= 5:
    print(i)
    i += 1

# 사용자 입력받기
user_input = ''
while user_input != 'quit':
    user_input = input("Type 'quit' to exit: ")
    print("You typed:", user_input)
 
# 무한 루프와 break문
while True:
    user_input = input("Type 'quit' to exit: ")
    if user_input == 'quit':
        break
    print("You typed:", user_input)
    
# 조건에 따른 특정 동작 반복, "Hello"를 세 번 출력
count = 0
while count < 3:
    print("Hello")
    count += 1

# 조건에 따른 특정 동작 반복, 5의 팩토리얼(=5*4*3*2*1)을 계산
num = 5
factorial = 1
while num > 0:
    factorial *= num
    num -= 1
print("Factorial of 5 is:", factorial)

 

반복문에 필요한 제어문 ( break, pass, continue )

  • 무한 루프를 짤 때는 반드시 ‘break’와 같은 반복을 끝내는 장치를 잘 만들어야 함!
    colab에서는 어느정도 시간이 지나면 자동으로 끊기겠지만, 본인 컴퓨터에서 그렇게 돌렸다간~~
  • break 예시
# 사용자가 'quit'을 입력할 때까지 반복하여 숫자를 입력받고 합을 출력
total = 0
while True:
    num = input("숫자를 입력하세요 (종료하려면 'quit' 입력): ")
    if num == 'quit':
        break
    total += int(num)

print("합:", total)
  • pass 예시 (코드가 비어있는 것과 같음)
# 홀수를 출력하는 코드에서 짝수일 경우에는 아무 작업도 수행하지 않고 넘어감
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 == 0:
        pass
    else:
        print(num, "은 홀수입니다.")
  • continue 예시
    • pass와 continue의 차이 : pass는 그냥 쭉 실행하고 continue는  반복문으로 올라감
    • 다음 코드로 넘어가는게 아니라 다음 반복으로 넘어가고 싶으면 continue를 써야 함
# 1부터 10까지의 숫자 중 짝수를 출력
# 짝수일 경우에만 출력을 수행하고, 홀수일 경우 다음 반복을 진행
num = 0
while num < 10:
    num += 1
    if num % 2 == 1:
        continue	# continue했으니 홀수면 print를 시행하지 않고 바로 반복으로 넘어감
    print(num)
    
' ' '
2
4
6
8
10
' ' '

# 만약에 여기서 continue 대신 pass를 쓰면 결과가 다름
# pass는 그냥 지나가고, 그 다음 실행할게 있으면 그것도 실행해줌
# continue는 무조건 반복문으로 올라감
num = 0
while num < 10:
    num += 1
    if num % 2 == 1:
        pass  	# pass는 이 if문이 아예 의미없어지는 것
    print(num)
    
' ' '
1
2
3
4
5
6
7
8
9
10
' ' '

 

for i in range(3):
	print(i)
	if i == 0:
		continue
        
'''
1
2
'''

 

 


퀴즈

 

Quiz 1.

임의의 수를 변수에 넣고 그 변수에 입력된 수가 양수인지 음수인지 판별하여 결과를 출력하는 파이썬 코드를 작성해보세요. (0은 양수로 간주합니다)

 

문제풀이

num = 3
if num % 2 == 0:
  print(num,"은 양수입니다.")
else:
  print(num,"은 음수입니다.")

 

결과

 


Quiz 2.

1부터 10까지의 정수 중에서 홀수만을 포함하는 리스트를 생성하는 파이썬 코드를 작성해보세요.

 

문제풀이

# 리스트 새로 생성할 땐 공란으로 대괄호..!
odd_list = []

for i in range(1,10+1):
  if i % 2 ==1:
    odd_list.append(i)
    print(odd_list)

 

결과


Quiz 3.

1부터 100까지의 정수 중에서 3의 배수일 때 "Fizz", 5의 배수일 때 "Buzz"를 출력하세요. (나머지 경우에는 그냥 숫자를 출력합니다)

 

문제풀이

for i in range (1,100+1):
  if i % 3 == 0:
    print('Fizz')
  elif i % 5 == 0:
    print('Buzz')
  else:
    print(i)

 

결과

 

 

'Python' 카테고리의 다른 글
  • Python 실습 | 이메일 유효성 검사
  • Python 실습 | 짝수 판별, 제품 재고 관리
  • Python 공부 | 튜플, 딕셔너리
  • Python 공부 | 리스트
초담
초담
4년차 마케터입니다
  • 초담
    그로스마케터의 기록
    초담
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (117)
      • Data Analytics Project (3)
      • SQL (55)
      • Python (43)
      • GA4 (0)
      • Tableau (8)
      • 아티클 스터디 (7)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
초담
Python 공부 | 조건문(if, elif, else) 반복문(for, while)
상단으로

티스토리툴바