21 3월 2025

Python 기초: 코딩 초보자를 위한 안내서

파이썬은 다재다능하고 널리 사용되는 프로그래밍 언어로, 명확한 구문과 가독성으로 유명합니다. 웹 개발부터 데이터 과학에 이르기까지 모든 분야에서 사용되므로 초보자에게 이상적인 선택이며, 다양한 진로를 열어줍니다. 이 기사에서는 간단하고 이해하기 쉬운 코드 예제를 통해 기본적인 파이썬 개념을 안내합니다.

첫 파이썬 프로그램: “Hello, World!”

전통적인 “Hello, World!” 프로그램부터 시작해 보겠습니다. 파이썬에서는 매우 간단합니다.

print("Hello, Beginner!")

이 한 줄은 다음을 수행합니다.

  1. print(): 이것은 내장 함수입니다. 함수는 특정 작업을 수행하는 재사용 가능한 코드 블록입니다. print()는 사용자에게 출력을 표시합니다.
  2. ("Hello, Beginner!"): 괄호 안에는 문자열 리터럴이 있습니다. 문자열은 일련의 문자이며, 작은따옴표('...') 또는 큰따옴표("...")로 묶입니다.

이 코드를 실행하면 파이썬 인터프리터가 print()를 실행하여 "Hello, Beginner!"를 화면에 표시합니다.

파이썬의 변수

변수는 데이터를 저장하는 데 중요합니다. 레이블이 지정된 컨테이너라고 생각하십시오. 설명적인 이름을 사용하고, 소문자로 시작하고, 밑줄을 사용하여 단어를 구분하는 것이 좋습니다 (예: my_variable, user_age). 다음은 예시입니다.

# 변수에 값 할당
message = "Welcome to Python!"
number = 10
pi = 3.14159

# 변수 값 출력
print(message)
print(number)
print(pi)

설명:

  1. message = "Welcome to Python!": message라는 변수가 생성되어 “Welcome to Python!” 문자열을 저장합니다.
  2. number = 10: number라는 변수가 정수 10을 저장합니다.
  3. pi = 3.14159: pi라는 변수가 부동 소수점 숫자 3.14159를 저장합니다.

그런 다음 print()가 이러한 값을 표시합니다. 파이썬은 동적 타입 언어입니다. 변수의 타입(문자열, 정수, 부동 소수점)을 명시적으로 지정할 필요가 없습니다. 파이썬은 할당된 값에서 타입을 추론합니다.

파이썬의 사용자 상호 작용

대화형 프로그램은 종종 사용자 입력을 필요로 합니다. 다음은 사용자 입력을 받는 방법입니다.

# 사용자 입력 받기
name = input("Please enter your name: ")

# 개인화된 인사말 출력
print("Hello, " + name + "!")  # 문자열 연결

설명:

  1. name = input("Please enter your name: "): input()은 프로그램을 일시 중지하고 사용자가 무언가를 입력하고 Enter 키를 누를 때까지 기다린 다음 입력된 내용을 문자열로 name에 저장합니다.
  2. print("Hello, " + name + "!"): 인사말을 출력합니다. + 연산자는 문자열과 함께 사용될 때 문자열 연결을 수행하여 문자열을 결합합니다. 가독성을 위해 연결할 때 + 주위에 공백을 추가하는 것이 좋습니다.

조건부 로직: if, else, elif

조건문을 사용하면 프로그램이 결정을 내리고 조건이 참인지 거짓인지에 따라 실행되는 코드 블록을 제어할 수 있습니다.

age = int(input("Enter your age: "))

if age >= 18:
    print("You are eligible to vote.")
elif age < 0:
    print("That is an incorrect age.")
else:
    print("You are not eligible to vote yet.")

분해:

  1. age = int(input("Enter your age: ")): 나이에 대한 사용자 입력을 받습니다. int()는 입력(기본적으로 문자열)을 정수로 변환합니다.
  2. if age >= 18:: age가 18보다 크거나 같은지 확인합니다. 참이면 들여쓰기된 print 문이 실행됩니다.
  3. elif age < 0:: 이전 if 조건이 거짓이면 이 조건을 확인합니다. 참이면 해당 블록이 실행됩니다. elif는 "else if"를 의미하며 여러 조건을 순서대로 확인할 수 있습니다.
  4. else:: if 또는 elif 조건이 모두 참이 아니면 else 아래의 들여쓰기된 코드가 실행됩니다. 들여쓰기는 파이썬에서 매우 중요합니다. if, elif, else와 관련된 코드 블록을 정의합니다. 일관된 들여쓰기(일반적으로 4개의 공백)는 파이썬 코드가 올바르게 작동하는 데 중요합니다.

루프: for로 코드 반복

루프는 코드 블록을 반복합니다. for 루프는 시퀀스(예: 목록 또는 숫자 범위)를 반복합니다.

# 0-4까지 숫자 출력
for i in range(5):
    print(i)

# 리스트 요소 출력
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

설명:

  1. for i in range(5):: range(5)는 0부터 5까지(5는 포함하지 않음)의 숫자를 생성합니다. 루프는 이 시퀀스를 반복합니다. 각 반복에서 현재 숫자가 i에 할당됩니다.
  2. for fruit in fruits:: 이 루프는 fruits 목록을 반복합니다. 각 반복에서 현재 목록 요소가 fruit에 할당됩니다.

루프: while로 코드 반복

while 루프는 조건이 참인 동안 계속됩니다.

count = 0
while count < 5:
    print(count)
    count += 1  # count 증가

설명:

  1. count = 0: count를 0으로 초기화합니다.
  2. while count < 5:: count가 5보다 작은 동안 루프가 계속됩니다.
  3. count += 1: 루프 내부에서 count는 각 반복마다 1씩 증가합니다. 이렇게 하면 무한 루프(조건이 항상 참으로 유지되는 경우)를 방지할 수 있습니다.

함수: 재사용 가능한 코드 블록

함수는 코드 재사용, 구성 및 가독성에 필수적입니다. 동일한 코드를 여러 번 반복하는 대신 함수를 한 번 정의하고 해당 기능이 필요할 때마다 호출할 수 있습니다. def를 사용하여 직접 정의합니다.

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

# 함수 호출
greet("Alice")
greet("Bob")

핵심 사항:

  1. def greet(name):: name이라는 하나의 매개변수를 받는 greet라는 함수를 정의합니다.
  2. print("Hello, " + name + "!"): 함수의 본문—함수가 호출될 때 실행되는 코드입니다.
  3. greet("Alice"): greet 함수를 호출하여 "Alice"를 인수로 전달합니다.

개념 결합: 간단한 면적 계산기

개념을 결합하여 약간 더 복잡한 프로그램을 만들어 보겠습니다.

def calculate_area(length, width):
    """Calculates the area of a rectangle."""  # Docstring
    area = length * width
    return area

# Get dimensions
length = float(input("Enter length: "))
width = float(input("Enter width: "))

# Calculate area
rectangle_area = calculate_area(length, width)

# Print result
print("Area:", rectangle_area)

설명:

  1. def calculate_area(length, width):: lengthwidth를 매개변수로 받아 직사각형 면적을 계산하는 함수를 정의합니다. """..."""는 함수를 설명하는 docstring입니다. Docstring은 문서화에 사용되며 help() 함수로 액세스할 수 있습니다.
  2. return area: 함수는 계산된 면적을 반환합니다. return 문은 함수를 종료하고 값을 함수가 호출된 곳으로 다시 보냅니다.
  3. 프로그램은 길이와 너비에 대한 사용자 입력을 가져와 float()를 사용하여 부동 소수점 숫자로 변환합니다. float()를 사용하면 소수점 값을 허용하여 계산기를 더욱 다양하게 만듭니다.
  4. calculate_area를 호출하여 치수를 전달하고 반환된 값을 rectangle_area에 저장합니다.
  5. 마지막으로 면적을 출력합니다.

더 많은 흐름 제어 도구

파이썬은 프로그램 흐름을 제어하기 위한 다른 도구를 제공합니다.

루프의 break, continue, else

  • break: 가장 안쪽의 for 또는 while 루프를 종료합니다.
  • continue: 루프의 다음 반복으로 진행합니다.
  • Loop else: for에서는 루프가 끝난 후 실행됩니다(break가 발생하지 않은 경우). while에서는 조건이 거짓이 된 후 실행됩니다(break가 발생하지 않은 경우).
#Example for break
numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number == 3:
        break  # Exit the loop when number is 3
    print(number)  # Output: 1 2

#Example for continue
numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number == 3:
        continue  # Skip to the next iteration when number is 3
    print(number)  # Output: 1 2 4 5

#Example for else
for i in range(5):
    print(i)
else:
    print("Loop finished") #It will be executed

for i in range(5):
    if i==3:
        break
    print(i)
else:
    print("Loop finished") #It won't be executed

match

match는 값을 패턴과 비교합니다. 다른 언어의 switch 문과 유사하지만 더 강력한 패턴 매칭 기능을 제공합니다. 파이썬 3.10부터 사용할 수 있습니다.

def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 401 | 403 | 404:  # Multiple cases
            return "Not allowed"
        case 418:
            return "I'm a teapot"
        case _:  # Default
            return "Something's wrong"

print(http_error(404))
print(http_error(500))

_는 와일드카드로, 다른 case와 일치하지 않으면 무엇이든 일치합니다.

데이터 구조

파이썬에는 데이터를 구성하기 위한 내장 데이터 구조가 있습니다.

  • 리스트: 순서가 있고 변경 가능한(변경할 수 있는) 시퀀스.
my_list = [1, 2, 3, "apple"]
my_list.append("cherry")  # Add an element to the end
print(my_list[0])       # Access element by index (starting from 0)
my_list.remove(2)        # Remove an element by value
print(my_list)
  • 튜플: 순서가 있고 변경 불가능한 시퀀스.
my_tuple = (1, 2, 3, "apple")
# my_tuple[0] = 5  # Error (immutable) - Tuples cannot be modified after creation
print(my_tuple[1])
  • 집합: 고유한 요소의 순서 없는 컬렉션.
my_set = {1, 2, 3, 3, 4, 5}  # Duplicates are automatically removed
print(my_set)  # Output: {1, 2, 3, 4, 5}
  • 딕셔너리: 키-값 쌍. 키는 변경 불가능해야 합니다(문자열, 숫자 또는 튜플과 같이).
my_dict = {"name": "Alice", "age": 30}
print(my_dict["name"])  # Access value by key
my_dict["age"] = 31      # Modify a value
print(my_dict)
  • 리스트 컴프리헨션: 리스트를 만들기 위한 간결한 구문.
squares = [x**2 for x in range(10)]      # List of squares
even = [x for x in range(20) if x % 2 == 0]  # Even numbers
print(squares)
print(even)

모듈

모듈은 코드를 재사용 가능한 파일로 구성합니다. import를 사용하여 다른 모듈의 기능에 액세스합니다.

import math

print(math.sqrt(16))  # Access the sqrt function from the math module
print(math.pi)        # Access the pi constant

from math import sqrt  # Import specific function

print(sqrt(25))

from math import *  # Import all (generally avoid)

print(pi)

이것은 math 모듈(수학 함수를 제공)을 사용하는 방법을 보여줍니다. 특정 함수나 상수를 가져오면 코드 가독성을 높이고 이름 충돌을 피할 수 있습니다. *를 사용하여 모든 것을 가져오는 것은 일반적으로 큰 프로젝트에서는 권장되지 않습니다.

함수 정의: 고급 기술

기본 인수 값

함수는 인수에 대한 기본값을 가질 수 있습니다.

def greet(name, greeting="Hello"):
    print(greeting + ", " + name + "!")

greet("Bob")           # Uses default greeting
greet("Alice", "Hi")  # Overrides default

키워드 인수

keyword=value 구문을 사용하여 함수를 호출합니다.

def describe_pet(animal_type, pet_name):
    print("I have a " + animal_type + " named " + pet_name + ".")

describe_pet(pet_name="Harry", animal_type="hamster")  # Order doesn't matter

임의의 인수 목록

함수는 *args를 사용하여 임의의 수의 위치 인수를 받을 수 있습니다.

def make_pizza(*toppings):
    print("Making a pizza with:")
    for topping in toppings:
        print("- " + topping)

make_pizza("pepperoni")
make_pizza("mushrooms", "cheese", "peppers")

*toppings는 모든 위치 인수를 toppings라는 튜플로 수집합니다.

임의의 키워드 인수

함수는 **kwargs를 사용하여 임의의 수의 키워드 인수를 받을 수 있습니다.

def build_profile(first, last, **kwargs):
    # Combines fixed and arbitrary keyword arguments to create a user profile.
    profile = {'first_name': first, 'last_name': last}
    profile.update(kwargs)  # Updates profile with key-value pairs from kwargs.
    return profile

user = build_profile("Albert", "Einstein", location="Princeton", field="physics")
print(user)  # Output: {'first_name': 'Albert', 'last_name': 'Einstein', 'location': 'Princeton', 'field': 'physics'}

**kwargs는 "keyword arguments"의 약자이며 추가적인 이름이 지정된 인수를 딕셔너리로 수집하기 위한 일반적인 명명 규칙입니다. 이를 통해 함수는 유연한 입력을 처리할 수 있습니다.

람다 표현식

lambda로 생성된 작고 익명 함수입니다.

add = lambda x, y: x + y
print(add(5, 3))  # Output: 8

pairs = [(1, 'one'), (2, 'two'), (3, 'three')]
pairs.sort(key=lambda pair: pair[1]) #sort by second element of tuple
print(pairs)

람다 함수는 이 예제의 sort와 같이 고차 함수(다른 함수를 인수로 사용하는 함수)의 인수로 자주 사용됩니다.

클래스

클래스는 데이터(속성)와 해당 데이터에 대해 작동하는 기능(메서드)을 묶는 방법을 제공합니다. 객체 지향 프로그래밍의 주요 기능 중 하나이며, 객체에 대한 청사진을 만들 수 있습니다.

class Dog:
    def __init__(self, name, age): #constructor
        self.name = name
        self.age = age

    def bark(self):
        print("Woof!")

my_dog = Dog("Buddy", 3) #instance of class
print(my_dog.name)
my_dog.bark()

설명:

  • class Dog:: Dog라는 클래스를 정의합니다.
  • def __init__(self, name, age):: 이것은 생성자(또는 초기화)입니다. 새로운 Dog 객체를 만들 때 자동으로 호출됩니다.
    • self: 클래스의 인스턴스(작업 중인 특정 Dog 객체)를 나타냅니다. 클래스 내의 모든 메서드에서 첫 번째 매개변수입니다.
  • def bark(self):: 이것은 메서드Dog 클래스에 속하는 함수입니다. 개의 데이터(이 간단한 예제에서는 사용하지 않지만 self.name과 같이)에 액세스할 수 있습니다.
  • my_dog = Dog("Buddy", 3) my_dog라는 Dog 클래스의 인스턴스를 만듭니다.

반복자

반복자는 특정 구현에 관계없이 컬렉션의 모든 요소를 순회할 수 있게 해주는 객체입니다.

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))

제너레이터

제너레이터는 리스트나 튜플과 같은 반복 가능한 타입입니다. 리스트와 달리 내용을 메모리에 저장하지 않고 yield 키워드를 사용하여 즉석에서 값을 생성합니다. 따라서 큰 시퀀스에 대해 메모리 효율적입니다. 또한 전체 리스트를 메모리에 생성하는 리스트 컴프리헨션과는 다릅니다.

def my_generator():
  yield 1
  yield 2
  yield 3

for value in my_generator():
  print(value)

#generator expression
squares = (x*x for x in range(10))
print(list(squares))

이러한 기본 사항은 파이썬 여정을 위한 견고한 기반을 제공합니다. 이러한 개념을 실험하고 결합하여 점점 더 정교한 프로그램을 구축할 수 있습니다. 모든 프로그래밍 언어를 마스터하려면 연습과 탐구가 핵심이라는 것을 기억하십시오.

관련 뉴스

관련 기사