04-1 파이썬의 입출력 및 함수: 기초부터 심화까지

파이썬 프로그래밍의 기본이며 흔히 사용되는 기능 중 하나는 입력과 출력, 그리고 함수를 사용하는 것입니다. 이 강좌에서는 다양한 입출력 방법과 함수의 개념, 실용적인 사용법을 학습할 것입니다.

입력과 출력

출력(Printing) 방법

가장 기본적인 출력 방법은 print() 함수를 사용하는 것입니다. 이 함수는 대괄호 안에 주어진 내용을 화면에 출력합니다. 여러 타입의 데이터를 문자열로 변환하여 출력을 위한 다양한 옵션을 제공합니다.


print('Hello, world!')
print(3.14159)
print('Number', 42)  # 여러 인자를 공백으로 구분하여 출력
print(f'The value is {42}')  # f-string을 이용한 포맷팅
    

여러 출력 방법을 구체적으로 살펴보겠습니다.

포맷팅 출력

문자열 포맷팅은 출력 내용을 더 이해하기 쉽게 정리하고 구조화할 수 있습니다.

  1. 고전적인 방식
  2. str.format() 메소드 이용
  3. f-string (Python 3.6+)

입력(Input) 방법

사용자로부터 입력을 받는 방법은 input() 함수를 사용하는 것입니다. input() 함수는 항상 문자열을 반환하므로, 필요하다면 적절한 타입으로 변환해야 합니다.


user_name = input('Enter your name: ')
age = input('Enter your age: ')
age = int(age)  # 숫자로 변환
print(f'Hello, {user_name}. You are {age} years old.')
    

입력 값 검증하기

입력 받은 값을 사용하기 전에 반드시 검증해야 합니다. 이는 특히 숫자 입력의 경우에 중요합니다.


while True:
    try:
        age = int(input('Enter a valid age: '))
        break  # 유효한 입력을 받았다면 루프 탈출
    except ValueError:
        print('Invalid input. Please enter a number.')
print(f'Thank you! You entered: {age}')

03장 파이썬 프로그램의 구조를 쌓는다! 제어문

이 장에서는 파이썬의 제어문에 대해 깊이 있는 이해를 바탕으로 다루어 보겠습니다. 제어문은 프로그램의 흐름을 관리하고 논리적인 결정을 내리는 중요한 도구입니다. 제어문을 잘 활용함으로써 우리는 보다 복잡하고 효과적인 프로그램을 작성할 수 있습니다.

1. 제어문의 기본 개념

프로그래밍에서의 제어문은 코드의 실행 흐름을 변경하는 명령어입니다. 이 흐름을 제어하는 것은 조건에 따라 코드를 실행하거나 반복할 수 있게 하여, 프로그램이 올바르게 동작하고 보다 효율적으로 실행될 수 있도록 합니다.

파이썬에서 자주 사용하는 제어문에는 조건문(Conditional Statements)과 반복문(Loop Statements)이 있습니다. 조건문은 주어진 조건에 따라 코드 블록을 실행할지 말지를 결정하는 데 사용되고, 반복문은 특정 코드 블록을 여러 번 실행해야 할 때 사용됩니다.

2. 조건문: if, elif, else

2.1 기본 If 문

조건문은 ‘만약 어떤 조건이 참(True)이라면, 이 코드를 실행하라’라는 로직을 구현할 수 있도록 합니다. 기본적인 if 문은 다음과 같이 작성됩니다:


if 조건식:
    실행할_코드
        

여기서 조건식이 참이라면 들여쓰기 된 코드 블록이 실행됩니다.

2.2 If-Else 문

if 문은 else 문과 결합하여 조건이 참이 아닐 경우 대체 실행할 코드를 지정할 수 있습니다.


if 조건식:
    실행할_코드_참일_때
else:
    실행할_코드_거짓일_때
        

이 구조는 조건이 거짓일 때 실행할 코드 블록을 제공함으로써 더욱 견고한 코드를 작성할 수 있도록 합니다.

2.3 If-Elif-Else 문

복수의 조건을 필요로 할 때는 elif (else if의 줄임말)를 사용할 수 있습니다. 이는 여러 조건식을 차례로 확인하여 참인 첫 번째 조건의 코드 블록만 실행합니다.


if 조건식1:
    실행할_코드1
elif 조건식2:
    실행할_코드2
else:
    실행할_코드_기본
        

이 구조는 여러 조건 중 하나라도 맞을 경우 그에 해당하는 코드 블록만 실행하고, 그 외의 경우 기본 실행할 코드를 지정할 수 있습니다.

3. 반복문: for, while

3.1 While 문

while 문은 주어진 조건이 참일 동안 코드 블록을 반복해서 실행하는 데 사용됩니다. 다음은 while 문 기본 구조입니다:


while 조건식:
    반복할_코드
        

조건식이 참이면 반복할 코드 블록이 실행되며, 조건식이 거짓이 되면 반복이 종료됩니다.

3.2 For 문

for 문은 주로 반복 횟수가 지정된 경우나 iterable 객체(예: 리스트, 튜플, 문자열 등)의 아이템을 하나씩 순회할 때 사용됩니다.


for 변수 in 순회가능한_객체:
    반복할_코드
        

순회 가능한 객체의 각 요소에 대해 반복할 코드가 실행되며, 더 이상 요소가 없을 때 반복이 종료됩니다.

4. 중첩된 제어문

제어문은 서로 중첩되어 사용할 수 있습니다. 이는 복잡한 조건이나 반복 구조를 구현할 때 유용합니다. 예를 들어, for 문 안에 if 문을 넣거나, while 문 안에 for 문을 넣을 수 있습니다.


for i in range(5):
    if i % 2 == 0:
        print(f"{i}는 짝수입니다.")
    else:
        print(f"{i}는 홀수입니다.")
        

위의 예시는 0부터 4까지의 수를 순회하면서 각 수가 짝수인지 홀수인지 판별하여 출력합니다.

5. break와 continue 문

5.1 Break 문

break 문은 반복문을 즉시 종료시킵니다. 일반적으로 특정 조건이 만족되었을 때 반복을 중단하고 싶을 때 사용됩니다.


for i in range(10):
    if i == 5:
        break
    print(i)
        

위의 코드는 0부터 9까지 순회하지만, 5에 도달하면 반복을 중단합니다.

5.2 Continue 문

continue 문은 현재 반복의 나머지 코드를 건너뛰고 다음 반복을 시작합니다. 다음 조건을 체크하기 전에 다음 반복을 수행할 때 유용합니다.


for i in range(5):
    if i == 2:
        continue
    print(i)
        

이 예시는 0부터 4까지 순회하면서 그 중 2는 건너뛰고 나머지 수들을 출력합니다.

6. 제어문을 활용한 프로그램 예제

끝으로 배운 제어문을 활용하여 간단한 프로그램을 작성해 보겠습니다. 여기서는 사용자가 입력한 숫자에 따라 피보나치 수열을 생성하는 프로그램을 만들 것입니다.


# 피보나치 수열 생성기
def fibonacci(n):
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a + b
    print()

num = int(input("피보나치 수열을 생성할 범위를 입력하세요: "))
fibonacci(num)
        

이 프로그램은 사용자가 입력한 숫자까지의 피보나치 수열을 생성하여 출력합니다. while 문을 사용하여 수열을 계산하고, 사용자가 원하는 만큼 수열을 제한하여 생성합니다.

이번 장에서는 파이썬의 기본적인 제어문에 대해 학습했습니다. 제어문은 프로그램의 논리적 흐름을 결정짓는 중요한 구성 요소이며, 이를 잘 이해하고 활용하면 더욱 강력하고 유지보수하기 쉬운 코드를 작성할 수 있습니다. 다음 장에서는 제어문을 더욱 확장하여 다양한 응용 사례를 다룰 것입니다.

파이썬 강좌: for문

이 강좌에서는 파이썬의 중요한 제어 구조 중 하나인 for문에 대해 자세히 알아보겠습니다. for문은 기본적으로 일정 범위의 값들을 순회할 때 사용됩니다. 파이썬에서 for문은 시퀀스(리스트, 튜플, 문자열 등)를 순회하는 데 유용하며, 반복 작업을 효율적으로 처리할 수 있도록 도와줍니다.

1. for문 기본 구조

파이썬의 for문은 시퀀스 내 각 요소에 대해 특정 코드 블록을 반복 실행하도록 설계되어 있습니다. 기본 구조는 다음과 같습니다:

for 변수 in 시퀀스:
    실행할 코드
    

여기서 “변수”는 각 반복에서 시퀀스의 요소 하나를 받게 되며, “실행할 코드”는 실제로 수행할 작업을 포함합니다.

2. 예제: 리스트 순회

리스트를 순회하는 가장 기본적인 예제를 살펴보겠습니다.

fruits = ['사과', '바나나', '체리']
for fruit in fruits:
    print(fruit)
    

이 코드는 fruits 리스트의 각 과일 이름을 출력합니다. 출력 결과는 아래와 같습니다:

사과
바나나
체리
    

3. range() 함수와 함께 사용하는 for문

range() 함수는 주로 for문과 함께 사용되어 정해진 횟수만큼 코드를 반복 실행할 수 있게 합니다. range(start, stop[, step]) 구문을 가지며, 파라미터는 다음과 같습니다:

  • start: 카운트가 시작될 숫자. 기본값은 0.
  • stop: 카운트가 끝날 숫자(포함되지 않음).
  • step: 카운트 간의 간격. 기본값은 1.

예시를 통해 이해해 보겠습니다:

for i in range(3):
    print(i)
    

출력:

0
1
2
    

4. 중첩 for문

중첩 for문은 간단히 말해 for문 내에 또 다른 for문이 있는 구조를 의미합니다. 다음은 이중 리스트를 순회하는 중첩 for문의 예시입니다:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for num in row:
        print(num)
    

이 코드는 2차원 리스트의 모든 숫자를 출력합니다.

5. for문과 else

파이썬에서 for문은 의외로 else와 함께 사용될 수 있습니다. for문이 정상적으로 끝났을 때 수행될 코드를 else 블록에 작성할 수 있습니다. 다음 예제를 보시죠:

for fruit in fruits:
    if fruit == '바나나':
        print('바나나 발견!')
        break
else:
    print('바나나가 없습니다.')
    

이 경우 ‘바나나 발견!’이 출력되며, 베어와 함께 for else 문이 어떻게 작동하는지 이해할 수 있습니다.

6. enumerate()와 함께 사용하기

enumerate() 함수는 시퀀스를 순회할 때 인덱스와 요소를 동시에 다루도록 도와줍니다. 다음 예제를 통해 자세히 살펴보겠습니다:

for index, fruit in enumerate(fruits):
    print(index, fruit)
    

출력:

0 사과
1 바나나
2 체리
    

7. 무한 루프를 피하기 위한 Break

특정 조건에서 for 반복을 중단하고 싶다면, break 문을 사용할 수 있습니다. 이렇게 사용하면 무한 루프나 불필요한 반복을 피할 수 있습니다.

for i in range(10):
    if i == 5:
        break
    print(i)
    

출력:

0
1
2
3
4
    

8. 성능 고려하기

복수의 반복문을 사용할 때는 성능을 고려해야 합니다. 특히 데이터셋이 클 경우, 중첩 반복문은 성능에 부정적인 영향을 줄 수 있습니다. 이를 최소화하기 위한 팁은 다음과 같습니다:

  • 가능한 경우 리스트 내포(list comprehensions)를 사용합니다.
  • 필요하지 않은 반복을 피하기 위한 ‘break’ 및 ‘continue’ 구문을 적절히 사용합니다.

9. for문과 리스트 내포

리스트 내포는 리스트를 더 간결하게 생성할 수 있는 방법입니다. 반복문에 비해 짧고, 때로는 속도가 더 빠릅니다:

numbers = [1, 2, 3, 4, 5]
squared = [n**2 for n in numbers]
print(squared)
    

출력:

[1, 4, 9, 16, 25]
    

결론

파이썬의 for문은 다양한 데이터 구조를 순회하고 처리하는 데 필수적인 도구이며, 효율적인 코드 작성에 큰 도움이 됩니다. 효과적인 코드를 작성하기 위해서는 for문의 다양한 활용법을 이해하고, 실제 코드에 적용해 보는 것이 중요합니다.

파이썬 강좌: while 문

파이썬 강좌: while 문

파이썬에서 루프를 만드는 데는 주로 두 가지 방법이 있습니다. 바로 for 문과 while 문입니다. 이 강좌에서는 while 문의 작동 원리와 어떻게 사용하는지 자세히 배워보겠습니다. while 문은 주어진 조건이 True인 동안 계속해서 블록의 코드가 실행되도록 합니다.

while 문의 기본 구조

while 문의 기본 구문은 다음과 같습니다:

while 조건식:
    실행할 코드 블록
    (보통 조건이 거짓이 되도록 만드는 코드가 포함되곤 합니다)

간단히 말하자면, while 문의 경우에는 조건식이 참일 때마다 아래의 코드 블록이 반복해서 실행됩니다. 그리고 조건식이 거짓이 되면 루프는 종료됩니다. 이제 간단한 while 문의 예제를 알아보겠습니다.

기본 예제

예제를 통해 while 문이 어떻게 동작하는지 살펴보겠습니다. 여기서는 1부터 5까지의 숫자를 출력하는 간단한 예제를 보겠습니다.

i = 1
while i <= 5:
    print(i)
    i += 1

이 예제에서는 초기 변수 i가 1로 설정됩니다. while 문은 i <= 5의 조건식이 참이면 루프를 계속해서 실행합니다. 루프 안에서 i의 값을 출력하고, i에 1을 더해줍니다. 결국, i가 6이 되면 조건식이 거짓으로 평가되어 루프가 종료됩니다.

무한 루프

조건식이 항상 참이면 while 문은 무한 루프에 빠질 수 있습니다. 이는 프로그램이 멈추지 않고 계속해서 실행됨을 의미합니다. 무한 루프는 보통 상황에 맞게 끝내주는 제어 장치와 함께 사용할 때 유용할 수 있습니다.

while True:
    사용자 입력 = input("종료하려면 'q'를 입력하세요: ")
    if 사용자 입력 == 'q':
        break

위 코드는 True라는 조건으로 인해 무한히 실행되지만, 사용자가 ‘q’를 입력하면 break 문을 통해 루프를 종료하게 됩니다.

while 문과 함께 쓰이는 else 블록

while 문에는 else 문을 붙일 수도 있습니다. else 블록은 while 문 블록이 끝난 후에 실행됩니다. 단, 루프가 break 문에 의해서 종료된 경우에는 실행되지 않습니다.

i = 1
while i <= 5:
    print(i)
    i += 1
else:
    print("루프가 자연스럽게 종료되었습니다.")

이 코드에서는 i가 6이 되었을 때 `while`이 종료되고, else 블록의 문장이 실행됩니다.

실제 사례로 보는 while 문의 활용

예제를 통해 while 문을 사용하는 몇 가지 유용한 방법을 알아보겠습니다. 각 예제는 더 복잡한 문제를 해결하기 위해 while 문을 어떻게 사용할 수 있는지 보여줍니다.

사용자 입력 검증

사용자의 입력을 받고, 올바른 입력이 들어올 때까지 계속해서 요청하는 프로그램을 작성할 수 있습니다.

while True:
    number_str = input("숫자를 입력하세요: ")
    try:
        number = int(number_str)
        break
    except ValueError:
        print("유효한 숫자가 아닙니다. 다시 시도하세요.")

이 경우 사용자가 숫자를 입력할 때까지 계속해서 입력을 받습니다. 잘못된 입력을 받으면 오류 메시지를 출력합니다.

파일의 끝까지 읽기

파일을 한 줄씩 읽다가 더 이상 읽을 데이터가 없으면 종료하는 프로그램을 작성할 수 있습니다.

with open('some_file.txt', 'r') as file:
    line = file.readline()
    while line:
        print(line, end='')
        line = file.readline()

이 코드는 파일을 열고, 각 줄을 순차적으로 읽어오는 동안 그 내용을 출력합니다. 더 이상 읽을 줄이 없으면 루프가 종료됩니다.

while 문을 사용할 때 주의할 점

while 문을 사용할 때는 무한 루프에 빠지지 않도록 조건을 명확히 설정하는 것이 중요합니다. 무한 루프는 종종 프로그램을 멈추게 하고, 의도하지 않은 상황을 만들 수 있습니다. 따라서 루프 안에서 조건을 적절히 변경하거나 break 같은 문을 사용하여 루프가 의도대로 종료될 수 있도록 해야 합니다.

또한, while 문을 사용할 때 루프의 실행 횟수가 적절히 제한되지 않는다면 성능 문제가 발생할 수 있습니다. 오래 걸리는 처리를 최소화하기 위해 루프 내에서의 연산을 최적화하고 불필요한 작업을 방지하는 것이 중요합니다.

결론

이제 while 문이 어떻게 동작하는지 이해하고, 이를 다양한 상황에서 사용할 수 있는 방법을 배웠습니다. while 문은 주어진 조건이 참인 동안 반복해서 실행되는 강력한 구조이며, 무한 루프나 사용자 입력 검증 등의 다양한 시나리오에서 사용할 수 있습니다. 이 강좌를 통해 여러분이 while 문을 자신 있게 사용할 수 있게 되기를 바랍니다.

03-1 파이썬 if문 이해하기

파이썬 프로그래밍의 가장 기본적이고 필수적인 제어문 중 하나는 if문입니다. 이번 강좌에서는 파이썬의 if문에 대해 깊이 있게 알아보고, 다양한 예제를 통해 실습해보도록 하겠습니다. 이를 통해 여러분의 프로그래밍 논리와 문제 해결 능력을 증진시킬 수 있을 것입니다.

if문이란 무엇인가?

if문은 코드의 흐름을 제어하는 데 사용되는 조건문입니다. 특정 조건이 참(true)인 경우에만 명령문을 실행하도록 하여 프로그램의 로직을 구성할 수 있습니다. 이러한 조건부 흐름 제어는 복잡한 문제를 간단하게 풀 수 있도록 돕습니다.

파이썬에서의 if문 구문

파이썬 if문의 기본 구문은 다음과 같습니다:

if 조건식:
    실행할 코드

여기서 조건식에는 부울 표현식이 오며, 이 표현식이 참일 경우 들여쓰기 된 ‘실행할 코드’ 블록이 실행됩니다. 이 조건식은 각종 비교 연산자(<, >, ==, !=, <=, >=)와 논리 연산자(and, or, not)를 사용하여 만들 수 있습니다.

예제

기본 예제

age = 18
if age >= 18:
    print("성인입니다.")

위의 코드에서 변수 age는 18로 설정되어 있습니다. if문은 age >= 18이 참인지 확인하고, 참이라면 “성인입니다.”를 출력합니다.

if-else 문

if문과 짝을 이루는 else절을 사용하면 조건이 참이 아닐 경우에 실행할 코드를 정의할 수 있습니다:

age = 15
if age >= 18:
    print("성인입니다.")
else:
    print("미성년자입니다.")

이 예제에서는 age가 18 미만이므로, “미성년자입니다.”가 출력됩니다.

if-elif-else 문

여러 조건을 검사해야 할 때는 elif를 사용하여 추가적인 조건을 명시할 수 있습니다:

score = 85
if score >= 90:
    print("A 학점")
elif score >= 80:
    print("B 학점")
elif score >= 70:
    print("C 학점")
else:
    print("D 학점")

여기서 score가 85이기 때문에, 출력은 “B 학점”이 될 것입니다. 프로그램은 위에서 아래로 조건을 평가하며, 참인 조건을 만나면 해당 블록을 실행하고 나머지 조건은 생략합니다.

중첩 if문

필요에 따라 if문 안에 또 다른 if문을 포함시켜 중첩된 조건 검사를 수행할 수 있습니다:

num = 10
if num >= 0:
    print("양수입니다.")
    if num == 0:
        print("이는 0입니다.")
else:
    print("음수입니다.")

위의 코드는 num이 0 이상인지 검사한 후, 다시 0과 같은지 확인하여 조건이 충족될 경우 메시지를 출력합니다.

논리 연산자를 활용한 복합 조건

여러 조건을 동시에 평가해야 하는 경우 논리 연산자인 andornot을 사용할 수 있습니다. 다음은 이러한 논리 연산자를 사용하는 예제입니다:

age = 25
income = 4000

if age > 18 and income > 3000:
    print("대출 신청이 가능합니다.")
else:
    print("대출 신청 조건이 충족되지 않습니다.")

이 예제는 나이가 18보다 크고 소득이 3000이 넘는 경우에만 “대출 신청이 가능합니다.”라는 출력문을 실행합니다.

조건 표현식 (삼항 연산자)

파이썬에서는 조건문을 단순화하기 위해 조건 표현식이라고도 불리는 삼항 연산자를 사용할 수 있습니다. 일반적인 형태는 다음과 같습니다:

참인 경우 실행할 값 if 조건식 else 거짓인 경우 실행할 값

다음은 이를 활용한 예제입니다:

num = 5
result = "짝수" if num % 2 == 0 else "홀수"
print(result)

이 코드는 num이 2로 나누어 떨어지는지를 검사하고, 조건에 맞게 “짝수” 또는 “홀수”를 result에 할당합니다.

결론

파이썬의 if문은 프로그램 흐름을 제어하는 데 필수적인 역할을 하며, 다양한 조건을 다룰 수 있도록 유연한 구문을 제공합니다. 기본 if문부터 중첩 if문, and/or 논리 연산자 사용, 삼항 연산자까지 살펴보았습니다. 이 강좌를 통해 여러분의 프로그래밍 실력이 더욱 향상되기를 바랍니다.