✨Today I Learned/Python

Python : 조건문, 반복문, 함수

임빵빵 2024. 7. 5. 15:30

20240705 TIL

조건문

if 조건:
    # 조건이 참일 때 실행될 코드
elif 다른조건:
    # 다른 조건이 참일 때 실행될 코드
else:
    # 위의 조건이 모두 거짓일 때 실행될 코드

 

▶ 연산자

  • 파이썬에서 조건을 판단하기 위해 비교 연산자를 사용
    • > : 초과
    • < : 미만
    • >= : 이상
    • <= : 이하
    • == : 같음
    • != : 같지 않음
  • 조건을 결합할 때 사용하는 논리 연산자도 알아두면 유용
    • and : 모두 참일 때 참
    • or : 하나 이상이 참일 때 참
    • not : 조건을 부정

반복문

▶for문

for 변수 in 반복할_데이터:
    코드_블록
  • 반복할_데이터 : 리스트, 튜플, 문자열 등과 같은 반복 가능한 데이터 타입
  • 변수 : 각 반복마다 현재 값을 가지는 변수

▶for문 기본 사용법

range() 함수와 함께 사용하기

  • range() 함수는 연속된 정수를 생성하는 데 사용되는 내장 함수
  • 이 함수는 시작값(start), 끝값(stop), 그리고 증가값(step)을 인자로 받아 사용
  • 이 함수는 주로 반복문에서 사용되며, 특히 for 루프와 함께 자주 사용
range(stop)
range(start, stop)
range(start, stop, step)
  • start: 순차적인 정수 시퀀스의 시작 값 /  이 값은 생략 가능하며, 기본값은 0
  • stop: 순차적인 정수 시퀀스의 끝 값 / 이 값은 필수적으로 지정 단, 실제로 생성되는 마지막 숫자는 이 값보다 작음
  • step: 각 숫자 사이의 간격 / 이 값은 생략 가능하며, 기본값은 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

▶while문

while 조건:
    코드_블록
  • 조건은 불리언 값(True or False)을 반환하는 표현식
  • 조건이 True로 평가될 때까지 코드 블록이 반복적으로 실행

▶ while문의 기본 사용법

무한 루프와 break문

while True:
    user_input = input("Type 'quit' to exit: ")
    if user_input == 'quit':
        break
    print("You typed:", user_input)
  • 이 코드는 무한 루프를 생성하고 사용자가 'quit'을 입력하면 루프를 종료. 이때 break문이 사용

예시들

더보기
  • break 예시

break 문은 사용자가 'quit'을 입력할 때 반복문을 종료

# 사용자가 'quit'을 입력할 때까지 반복하여 숫자를 입력받고 합을 출력
total = 0
while True:
    num = input("숫자를 입력하세요 (종료하려면 'quit' 입력): ")
    if num == 'quit':
        break
    total += int(num)

print("합:", total)
  • pass 예시

pass 문은 아무런 동작을 하지 않고 다음 반복을 계속함. 홀수를 출력하는 반복문에서 짝수일 경우 아무 작업도 하지 않고 다음 반복을 진행

# 홀수를 출력하는 코드에서 짝수일 경우에는 아무 작업도 수행하지 않고 넘어감
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 == 0:
        pass
    else:
        print(num, "은 홀수입니다.")
  • continue 예시

continue 문은 짝수일 경우에만 출력을 수행하고, 홀수일 경우 다음 반복을 진행

# 1부터 10까지의 숫자 중 짝수를 출력
num = 0
while num < 10:
    num += 1
    if num % 2 == 1:
        continue
    print(num)

QUIZ

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

for i in range(1, 101):
  if i % 3 == 0:
    print("Fizz")
  elif i % 5 == 0:
    print("Buzz")
  else:
    print(i)
  1. for 반복문을 이용하여 1부터 100까지의 정수 범위를 지정해줌 --range(1,101)
  2. 조건문을 이용하여 3의 배수일때 나올 답과 5의 배수일 때 나올 답과 그 두 개가 아닌 경우의 답을 설정
  3. 배수 : 정수 a가 정수 b로 나뉘어질때 딱 떨어진다면 a는 b의 배수
  4. 그렇기 때문에 조건문을 이용하여 3으로 나눌 때 5로 나눌 때 0으로 떨어지는 배수를 찾을 수 있음

함수

def 함수이름(매개변수1, 매개변수2, ...):
    # 함수 내부에서 수행할 작업
    return 결과값  # (선택적) 함수의 결과를 반환

 

▶ 간단한 예시 코드

# 함수 정의
def greet(name):
    message = "Hello, " + name + "!"
    return message

# 함수 호출
greeting = greet("Alice")
print(greeting)  # 출력: Hello, Alice!
  • 위의 예시에서는 greet라는 함수를 정의하여 이름을 전달하면 해당 이름과 함께 인사말을 반환하는 간단한 함수를 만들었음
  • 함수를 호출하면 반환된 인사말을 출력

▶ 함수 심화 배우기

 

전역변수 vs 지역변수

전역변수(Gloval Variables) - 프로그램 전체에서 접근 가능한 변수

  • 프로그램이 시작될 때 생성, 종료될때까지 메모리에 유지
  • 프로그램의 어디서든지 접근 가능 -> 여러 함수에서 공통적으로 사용되는 값을 저장할 때 유용
  • 하지만 너무 많은 전역변수를 사용하면 코드의 가독성 ↓ 디버깅 어려워짐

 

지역변수(Local Variables) - 특정한 범위(예: 함수 내부)에서만 접근 가능한 변수

  • 해당 범위에서 생성되고, 범위를 벗어나면 메모리에서 사라짐
  • 함수 내에서 정의된 변수는 해당 함수 내에서만 사용 가능
  • 함수가 실행될 때 생성되고 함수가 종료되면 메모리에서 제거되므로 메모리 관리에 효율적

예시)

더보기
  • global_var는 전역변수로, 프로그램 어디서든지 접근 가능
  • 반면에 local_var는 함수 local_example() 내에서만 접근 가능한 지역변수
  • 함수 내에서는 global 키워드를 사용하여 전역변수를 수정 가능
  • 함수 내에서 전역변수를 수정하더라도, 해당 변수는 전역적으로 수정됨
# 전역변수 예시
global_var = 10

def global_example():
    print("전역변수 접근:", global_var)

global_example()  # 출력: 전역변수 접근: 10

# 지역변수 예시
def local_example():
    local_var = 20
    print("지역변수 접근:", local_var)

local_example()  # 출력: 지역변수 접근: 20

# 함수 내에서 전역변수를 수정하는 예시
def modify_global():
    global global_var
    global_var = 30
    print("함수 내에서 수정된 전역변수:", global_var)

modify_global()  # 출력: 함수 내에서 수정된 전역변수: 30
print("수정된 전역변수 확인:", global_var)  # 출력: 수정된 전역변수 확인: 30

 

가변 인수(Variable-length Arguments) 활용하기

  • 가변 인수 :여러 개의 인수들을 받을 수 있는 함수를 만들기 위해서는 가변 인수 활용 가능
  • *args - 함수를 호출할 때 임의의 개수의 위치 인수를 전달할 수 있도록 함
  • **kwargs - 함수를 호출할 때 임의의 개수의 키워드 인수를 전달할 수 있도록 함

예시)

더보기

args는 함수를 호출할 때 임의의 개수의 위치 인수를 전달할 수 있도록 함

*kwargs는 함수를 호출할 때 임의의 개수의 키워드 인수를 전달할 수 있도록 함

def sum_values(*args):
    total = 0
    for num in args:
        total += num
    return total

result = sum_values(1, 2, 3, 4, 5)
print("합계:", result)  # 출력: 합계: 15

위의 함수 sum_values는 임의의 개수의 위치 인수를 받아서 그 합계를 계산

함수 내에서는 args라는 튜플로 위치 인수들을 받아 처리

 

*kwargs를 사용하여 키워드 인수를 받는 경우도 비슷

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=30, country="USA")

위의 코드에서 print_info 함수는 임의의 개수의 키워드 인수를 받아서 그 정보를 출력

함수 내에서는 kwargs라는 딕셔너리로 키워드 인수들을 받아 처리

QUIZ

평균과 분산 계산기 - 주어진 데이터셋의 평균을 계산하는 함수를 작성하고 함수의 결과를 출력해 보세요.

def calculate_mean(numbers) : 
  total = sum(numbers)
  mean = total / len(numbers)
  return mean

data = [2, 4, 6, 8, 10]
average = calculate_mean(data)
print(average)
  • calculate_mean이라는 함수를 정의하여 숫자 리스트 평균을 계산
  • 숫자 리스트를 받아 sum()함수를 이용해 총합 구하기 // 리스트의 길이로 나누어 평균 계산하고 그 값을 반환
  • 숫자 리스트를 인수로 전달 -- > 평균 계산하고 출력

🛠️느낀 점

확실히 사전캠프때 보다 자세하게 파이썬을 배울 수 있어서 좋았고, 그만큼 이해도 잘 됐다.
어제도 느꼈지만 많은 문법들을 이해하려고 하기보단 코드카타나 지속적인 복습을 통해 계속 익혀나가는 게 좋을 듯
함수는 확실히 심화로 들어가면 좀 더 어려워지는 것 같긴하다 그래도 잘 해내야지 뭐
그래도 조금씩 파이썬에 대한 이해도가 올라가서 그런지 코드를 적고 답이 나오는게 점점 재밌어지고 있다 좋은 징조인듯 🤩