04-4 파이썬의 입출력, 프로그램의 입출력

이번 강좌에서는 파이썬을 통한 입출력 방법에 대해 깊이 있게 살펴보도록 하겠습니다. 입출력은 모든 프로그래밍 언어의 근본적인 요소 중 하나로, 데이터를 읽고 쓰는 기능을 제공합니다. 파이썬에서는 다양한 방식으로 입출력을 수행할 수 있으며, 각각의 방법에 고유한 사용 사례가 있습니다.

표준 입출력(Standard Input/Output)

파이썬은 print() 함수를 통해 표준 출력(콘솔)에 데이터를 출력합니다. 이 함수는 따로 지정하지 않아도 기본적으로 문자열을 화면에 출력하는 방법입니다. print() 함수는 하나 이상의 데이터를 콤마로 구분하여 출력할 수도 있으며, 출력할 때 개행 문자를 포함하여 다양한 형식을 지정할 수 있습니다.

print("안녕하세요, 파이썬!")  # 기본 출력
print("이름:", "홍길동", "나이:", 25)  # 여러 항목을 출력

반대로 표준 입력을 받을 때는 input() 함수를 사용합니다. 사용자의 입력을 문자열로 받아들이며, 이를 통해 동적인 프로그램을 설계할 수 있습니다. input() 함수를 사용하여 입력받은 데이터는 항상 문자열 형태로 저장되므로, 필요에 따라 적절한 데이터 타입으로 변환하는 과정이 필수적입니다.

name = input("이름을 입력하세요: ")  # 사용자 입력
print("안녕하세요,", name)  # 입력받은 데이터를 출력

파일 입출력(File I/O)

파일 입출력은 데이터를 파일에 저장하거나 파일에서 데이터를 읽어오는 방법을 말합니다. 파이썬에서는 open() 함수를 사용하여 파일을 열고, 파일 객체의 메서드를 사용하여 데이터를 읽고 쓸 수 있습니다. 파일은 보통 텍스트 모드로 열리지만, 이진 모드로도 열 수 있습니다. 파일 모드는 읽기(‘r’), 쓰기(‘w’), 추가(‘a’) 등으로 지정할 수 있습니다.

# 파일에 데이터 쓰기
with open("example.txt", "w") as file:
    file.write("Hello, world!")  # 파일에 문자열 쓰기

위의 예제에서는 with 구문을 사용하여 파일을 엽니다. with 구문은 파일을 열고 나서 각종 작업을 수행한 후, 자동으로 파일을 닫아주는 역할을 합니다.

파일에서 데이터를 읽는 방법은 다음과 같습니다:

# 파일에서 데이터 읽기
with open("example.txt", "r") as file:
    content = file.read()  # 파일의 모든 내용을 읽어옴
    print(content)

파일 모드의 이해

파이썬에서 파일을 열 때 사용할 수 있는 다양한 모드가 있습니다. 각 모드는 파일을 어떻게 다룰지를 결정합니다.

  • r: 읽기 전용 모드로 파일을 엽니다. 파일이 존재하지 않으면 오류가 발생합니다.
  • w: 쓰기 전용 모드로 파일을 엽니다. 파일이 이미 존재한다면 내용을 덮어씁니다.
  • a: 추가 모드로 파일을 엽니다. 파일이 이미 있다면 끝에 내용을 추가합니다.
  • r+: 읽기/쓰기 모드로 파일을 엽니다. 파일이 존재해야 합니다.
  • w+: 읽기/쓰기 모드로 파일을 엽니다. 파일이 이미 존재한다면 내용을 덮어씁니다.
  • a+: 읽기/추가 모드로 파일을 엽니다. 파일이 이미 있다면 끝에 내용을 추가합니다.
  • b: 이진 모드로 파일을 엽니다.

예제: 바이너리 파일 읽기

텍스트 파일이 아니라 소위 바이너리 파일(이미지, 영상 등)을 열 때도 파이썬은 강력한 기능을 제공합니다.

with open("example.jpg", "rb") as binary_file:
    data = binary_file.read()
    print("File size:", len(data), "bytes")  # 파일의 크기를 바이트 단위로 출력

고급 입출력 기법

고급 파이썬 입출력 기능에는 파일을 특정 방식으로 처리하는 고급 사용이 포함됩니다. 예를 들어, CSV 파일을 처리하거나 JSON 파일을 읽는 작업은 입출력의 확장된 형태라 할 수 있습니다.

CSV 파일 처리

파이썬의 csv 모듈을 사용하여 CSV 파일을 보다 쉽게 처리할 수 있습니다. CSV 파일은 데이터를 카마(,)로 구분하여 저장하는 간단한 형태의 파일입니다.

import csv

# CSV 파일 쓰기
with open("data.csv", "w", newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(["Name", "Age"])
    writer.writerow(["Alice", 25])
    writer.writerow(["Bob", 30])

# CSV 파일 읽기
with open("data.csv", "r") as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)

JSON 파일 처리

JSON은 자바스크립트 객체 표기법을 파이썬에서 다루기 위한 역활을 합니다. 파이썬의 json 모듈은 JSON 형식을 파이썬 데이터 타입으로 변환하고 반대로 변환하는 기능을 제공합니다.

import json

# JSON 데이터 쓰기
data = {
    "name": "Charlie",
    "age": 35,
    "city": "Seoul"
}

with open("data.json", "w") as jsonfile:
    json.dump(data, jsonfile)

# JSON 데이터 읽기
with open("data.json", "r") as jsonfile:
    data_loaded = json.load(jsonfile)
    print(data_loaded)

NOTE: JSON과 CSV는 웹에서 데이터 교환에 많은 용도로 사용됩니다. 위험을 최소화하기 위해 데이터를 정확한 형식으로 처리하는 것이 중요합니다.

문자 인코딩과 디코딩

입출력을 할 때는 문자 인코딩과 디코딩을 올바르게 설정하는 것이 중요합니다. 특히 다국어를 지원하는 프로그램에서는 UTF-8을 사용하는 것이 일반적입니다.

# UTF-8 파일 쓰기
with open("utf8_file.txt", "w", encoding="utf-8") as file:
    file.write("안녕하세요. UTF-8 인코딩 파일입니다.")

# UTF-8 파일 읽기
with open("utf8_file.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

인코딩을 설정하지 않으면, 파이썬은 개별 운영체제의 기본 설정을 따르게 됩니다. 이는 파일을 다른 시스템에서 사용할 때의 호환성 이슈를 일으킬 수 있습니다. 따라서 항상 명시적인 인코딩 설정이 권장됩니다.

결론

파이썬은 강력하고 유연한 입출력 가능성을 제공합니다. 입출력 과정은 단순한 데이터를 화면에 출력하거나 파일로부터 읽는데 그치지 않고, 다양한 형식의 데이터를 읽고 쓰는 데 필요한 방법들을 포함합니다. 표준 입출력부터 파일 입출력까지, 그리고 파일의 모드를 이해하고 다루는 것은 모두 중요한 스킬입니다.

계속해서 다양한 입출력 메서드와 응용을 연습하면서, 여러분의 프로그래밍 기술을 넓혀가길 바랍니다. 다음 번에는 파이썬의 예외 처리에 대해 자세히 알아보겠습니다. 질문이 있으면 언제든지 댓글로 남겨주세요!

파이썬의 입출력: 파일 읽고 쓰기

서론

파일 입출력은 대부분의 프로그래밍 언어에서 필수적인 요소이며, 데이터를 영구적으로 저장하거나 외부의 데이터를 프로그램에 반입하는 데 사용됩니다. 파이썬에서는 이러한 파일 입출력 작업을 매우 쉽게 수행할 수 있는 강력하고 직관적인 기능을 제공합니다. 이번 강좌에서는 파이썬을 사용하여 파일을 읽고 쓰는 방법을 자세히 설명하도록 하겠습니다.

파일 열기와 닫기

파일 작업을 하기 위해 가장 먼저 해야 할 일은 파이썬에서 파일을 여는 것입니다. 파일을 열기 위해서는 내장 함수인 open()을 사용합니다. open() 함수는 파일 이름과 파일 열기 모드를 매개변수로 받아들입니다.

file_object = open("example.txt", "r") # 읽기 모드로 파일 열기

파일을 사용한 후에는 꼭 닫아줘야 합니다. 이를 통해 시스템 자원이 해제되고, 데이터 손상을 방지할 수 있습니다. 파일 닫기는 close() 메서드를 통해 수행할 수 있습니다.

file_object.close()

파일 열기 모드

파일을 열 때 파일의 용도에 따라 다양한 모드를 사용할 수 있습니다. 주요 파일 열기 모드들은 다음과 같습니다:

  • 'r': 읽기 모드. 파일의 내용을 읽기 위해 사용합니다. 파일이 존재해야 합니다.
  • 'w': 쓰기 모드. 파일에 내용을 쓰기 위해 사용합니다. 파일이 존재하지 않으면 새로 생성되고, 기존 파일이 존재하면 해당 파일의 내용이 모두 삭제됩니다.
  • 'a': 추가 모드. 파일 끝에 내용을 덧붙이기 위해 사용합니다. 파일이 존재하지 않으면 새로 생성됩니다.
  • 'b': 바이너리 모드. 파일을 바이너리로 처리할 때 사용됩니다. 예를 들어, ‘rb’는 바이너리 읽기 모드입니다.
  • 't': 텍스트 모드. 기본값이며, 텍스트 파일로 처리합니다.
  • 'x': 배타적 생성 모드. 파일이 존재하지 않을 때 새 파일을 생성합니다. 파일이 이미 존재하면 오류가 발생합니다.

파일 읽기

파일을 읽는 작업은 주로 read()readline()readlines() 메서드를 통해 이루어집니다. 파일 크기와 형식에 따라 적절한 메서드를 선택하여 사용할 수 있습니다.

read() 메서드

read() 메서드는 파일의 내용을 문자열로 읽어들입니다. 전체 파일 내용을 한 번에 읽거나, 읽을 바이트 수를 지정할 수 있으며, 읽기 작업 후에는 파일 포인터가 파일 끝에 위치하게 됩니다.

with open("example.txt", "r") as file:
    content = file.read()
print(content)

readline() 메서드

readline() 메서드는 한 줄씩 읽어들일 때 유용합니다. 줄 끝의 개행 문자는 포함되어 있으며, 읽기 작업 후에는 파일 포인터가 다음 줄로 이동합니다.

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

readlines() 메서드

readlines() 메서드는 파일의 모든 줄을 읽어 리스트로 반환합니다. 각 줄은 리스트의 개별 요소로 처리됩니다.

with open("example.txt", "r") as file:
    lines = file.readlines()
for line in lines:
    print(line, end='')

파일 쓰기

파일에 내용을 쓰는 작업은 write()와 writelines() 메서드를 통해 이루어집니다. 파일에 데이터를 기록하는 다양한 방법을 제공하여 유연하게 사용할 수 있습니다.

write() 메서드

write() 메서드는 문자열 데이터를 파일에 기록합니다. 데이터를 기록한 후에는 반드시 flush()를 호출하거나 파일을 닫아야 실제로 데이터가 기록됩니다.

with open("example.txt", "w") as file:
    file.write("Hello, World!")

writelines() 메서드

writelines() 메서드는 문자열 리스트를 받아 파일에 기록합니다. 각 문자열은 기존 줄 끝에 이어져 기록되므로 각 줄 끝에 개행 문자를 명시적으로 추가해야 할 수도 있습니다.

with open("example.txt", "w") as file:
    lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
    file.writelines(lines)

파일 처리 예외 관리

파일 작업은 다양한 오류가 발생할 수 있으므로, 예외 처리를 통해 오류를 효과적으로 처리하는 것이 중요합니다. 파이썬의 tryexcept 구문을 사용하여 예외를 관리할 수 있으며, 이를 통해 파일 없음, 읽기 오류 등의 예외를 처리할 수 있습니다.

try:
    with open("example.txt", "r") as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")
except Exception as e:
    print(f"예외가 발생했습니다: {e}")

결론

이번 강좌에서는 파이썬에서 파일을 읽고 쓰는 기본적인 방법과 주요 메서드, 그리고 파일 처리 시 예외 관리를 다루었습니다. 파일 입출력은 응용 프로그램의 데이터를 외부와 주고받고 저장하는 데 필수적인 기능입니다. 다양한 파일 입출력 방식과 적절한 예외 관리를 통해 파이썬 프로그램을 더욱 견고하게 작성할 수 있습니다.

파이썬 강좌: 파이썬의 입출력, 사용자 입출력

파이썬은 강력한 프로그래밍 언어로서 데이터의 입출력을 매우 쉽게 처리할 수 있는 기능을 제공합니다. 이 강좌에서는 파이썬에서 제공하는 기본적인 입출력 메커니즘과 사용자의 입력을 처리하는 방법을 깊이 있게 다룰 것입니다. 이를 통해 여러분은 데이터와 직접 상호작용하는 애플리케이션을 만드는 능력을 갖추게 될 것입니다.

파이썬의 표준 입력과 출력

파이썬에서 입출력을 이해하려면 가장 기본적인 함수들로 시작해야 합니다. print()와 input() 함수는 파이썬 프로그래밍에서 매우 자주 사용됩니다. print() 함수는 콘솔에 출력을 나타내기 위한 함수이며, input() 함수는 사용자의 입력을 받기 위해 사용됩니다.

print() 함수

print() 함수는 데이터의 가시화를 위해 사용됩니다. 예를 들어, 변수의 값을 확인하거나 프로그램의 실행 상태를 모니터링하는 데 사용됩니다.

# Hello, World! 출력
print("Hello, World!")

위의 코드에서는 문자열 "Hello, World!"가 콘솔에 출력됩니다. print() 함수는 다양한 유형의 데이터를 출력할 수 있으며, 여러 인자를 쉼표로 구분하여 출력할 수 있습니다.

a = 5
b = "Python Programming"
print(a, b)

위 코드에서는 숫자 5와 문자열 “Python Programming”이 공백으로 구분되어 출력됩니다. print() 함수는 추가적인 매개변수를 통해 출력물의 형식을 더 유연하게 조정할 수 있습니다. 예를 들어, 출력물 간의 구분을 변경하거나 끝에 추가적인 문자열을 붙이는 방법입니다.

print(a, b, sep=", ", end="!!\n")

이 경우, 출력은 “5, Python Programming!!” 형식으로 나타나며, 각 요소는 쉼표와 공백으로 구분되고 출력 끝에 “!!”가 추가됩니다.

input() 함수

input() 함수는 사용자의 입력을 받을 때 사용됩니다. 이 함수는 입력을 문자열로 처리하므로, 숫자를 입력받고자 하는 경우에는 자료형 변환이 필요합니다.

name = input("Enter your name: ")
print("Hello,", name)

위 예제에서는 사용자가 이름을 입력하면, 그 이름을 사용하여 “Hello, [Name]”이라는 메시지를 출력합니다. 이 때, 사용자가 입력한 모든 것은 문자열로 처리된다는 점을 기억해야 합니다.

고급 출력 포매팅

출력을 형식화하는 방법은 다양하며, 가독성과 유연성을 높이기 위해 파이썬은 여러 출력 형식화를 지원합니다.

기본 문자열 포맷팅

파이썬의 기본 문자열 포멧팅을 사용하는 전통적인 방법은 다음과 같습니다. 문자열 내에 % 기호를 사용하여 변수 자리를 표시하고, 이 자리에 대응할 변수를 할당합니다.

age = 30
print("나는 %d살 입니다." % age)

이 방식은 튜플을 사용하여 여러 항목을 포함할 수도 있습니다.

name = "철수"
age = 30
print("%s는 %d살 입니다." % (name, age))

하지만 이러한 방식은 현대적인 방법에 비해 다소 제한적이고 가독성이 떨어질 수 있습니다.

str.format() 메서드

파이썬 2.7과 3.2부터는 str.format() 메서드를 사용하여 포맷팅할 수 있습니다. 이 방식은 {} 기호를 사용자 자리에 넣고, format() 메소드의 인자로 해당 값을 전달합니다.

print("{}는 {}살 입니다.".format(name, age))

또는 인덱스를 사용하여 더욱 명확하게 어느 값이 어느 위치에 와야 할지를 지정할 수 있습니다.

print("{0}는 {1}살 입니다.".format(name, age))

이 방법은 보다 읽기 쉽고, 변수의 순서를 변경하거나 출력 형식을 쉽게 수정 가능하다는 이점이 있습니다.

파이썬 3.6과 f-strings

파이썬 3.6부터는 f-string을 사용할 수 있습니다. 이는 문자열 앞에 f를 붙여서, 중괄호 안에 변수를 직접 넣는 방식으로, 매우 직관적이고 코드가 간결해집니다.

print(f"{name}는 {age}살 입니다.")

이 방법은 가독성이 가장 뛰어나며, 변수를 직접 삽입할 수 있다는 장점이 있습니다. 또한, 내장 표현식을 지원하므로 복잡한 데이터 변환이나 계산도 쉽게 적용할 수 있습니다.

사용자 입력 처리 심화

사용자의 입력을 다루는 것은 단순히 입력을 받는 것을 넘어서, 그 입력의 유효성을 검사하고 적절한 피드백을 제공하며, 필요할 경우 사용자로부터 재입력을 요구하는 과정을 포함합니다.

자료형 변환과 예외 처리

input() 함수는 항상 문자열을 반환하므로, 숫자 등의 다른 자료형이 필요한 경우에는 변환이 필요합니다. 이 과정에서 발생할 수 있는 오류를 관리하기 위해 예외 처리가 필요합니다.

try:
    age = int(input("나이를 입력하세요: "))
    print(f"당신의 나이는 {age}입니다.")
except ValueError:
    print("유효한 숫자를 입력해 주세요.")

위 코드에서, 사용자가 숫자가 아닌 다른 값을 입력한 경우, ValueError가 발생하며 친절한 오류 메시지를 출력하고 프로그램을 안전하게 유지합니다.

반복을 통한 유효한 입력 받기

사용자가 유효한 입력을 할 때까지 계속해서 반복 요청할 수 있습니다. 이는 특정 조건이 충족될 때까지 입력을 요구하는 방식으로 구현됩니다.

while True:
    try:
        age = int(input("나이를 입력하세요: "))
        break  # 유효한 입력인 경우 반복 중지
    except ValueError:
        print("유효한 숫자를 입력해 주세요.")

print(f"입력 받은 나이는 {age}입니다.")

이러한 반복 구조는 유효하지 않은 입력이 주어졌을 때 사용자에게 기회를 제공하면서 프로그램의 정상적인 흐름을 유지합니다.

마치며

이번 강좌에서는 파이썬의 기본 입출력 방법과 사용자 입력을 처리하는 다양한 기법을 학습했습니다. 이를 통해 여러분은 프로그램의 유연성과 안전성을 높이는 방법을 익혔을 것입니다. 다음 강좌에서는 파일 입출력과 같은 더 복잡한 데이터 처리 기술을 탐구해 보겠습니다.

그 동안 질문이 있거나 도움이 필요하다면, 언제든지 아래 댓글 섹션에 문의하시기 바랍니다. 행복한 코딩 되세요!

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 문을 사용하여 수열을 계산하고, 사용자가 원하는 만큼 수열을 제한하여 생성합니다.

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