목표 : 컴퓨터와 친구처럼 소통할 수 있는 방법 => 프로그래밍에 대해 배울 것임
친근한 언어: 처음 배우는 사람들도 쉽게 이해할 수 있도록 만들어졌어요.
재미있는 프로젝트: 게임이나 간단한 계산기, 그림 그리기 같은 프로젝트를 해볼 수 있어요.
미래의 도구: 나중에 더 큰 프로젝트나 다른 프로그래밍 언어를 배울 때 기본이 될 거예요.
학교에서 간단한 프로그램 만들기
인터넷에서 인기 있는 게임 개발
로봇이나 드론 조종하기
print("Hello, World!")
공식 웹사이트 방문 https://www.python.org/
다운로드 및 설치
웹사이트에서 "Download Python" 버튼을 찾아 클릭해요.
다운로드 받은 파일을 실행하여 설치를 진행해요.
설치할 때 "Add Python to PATH"라는 옵션이 있으면 꼭 체크해 주세요.
IDE(통합 개발 환경)는 코드를 쓰고, 실행하고, 디버깅할 수 있도록 도와주는 프로그램
VS Code (비주얼 스튜디오 코드)IDLEJupyter Notebookage = 10 -> 숫자 10을 저장하는 변수num1 = 5, pi = 3.14greeting = "안녕하세요"is_active = True덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%), 거듭제곱(**)
크거나 같다(>=), 작거나 같다(<=), 같다(==), 같지 않다(!=), 크다(>), 작다(<)
그리고(and), 또는 (or), 부정(not)
출력
print() 함수를 사용하여 화면에 결과를 보여줌print("안녕하세요")
입력
input() 함수를 사용하여 사용자로부터 데이터를 입력받음name = input("이름을 입력하세요: ")
print("안녕하세요, " + name + "님!")
- input( ) 함수를 사용해 두 숫자를 문자열로 받습니다.
- int( ) 또는 float( ) 함수를 사용해 숫자로 변환합니다.
- 각 연산자의 결과를 계산하고 print( )로 출력합니다.
# 사용자에게 숫자 입력 받기
num1 = float(input("첫 번째 숫자를 입력하세요: "))
num2 = float(input("두 번째 숫자를 입력하세요: "))
# 계산
print("더하기:", num1 + num2)
print("빼기:", num1 - num2)
print("곱하기:", num1 * num2)
# 나눗셈은 0으로 나누지 않도록 처리
if num2 != 0:
print("나누기:", num1 / num2)
else:
print("두 번째 숫자는 0이면 안됩니다.")
사용자에게 input( )으로 정보를 입력받습니다.
받은 데이터를 변수에 저장합니다.
print( )를 사용하여 포맷팅된 문장을 출력합니다.
name = input("이름을 입력하세요: ")
age = input("나이를 입력하세요: ")
subject = input("좋아하는 과목을 입력하세요: ")
print("\n안녕하세요! 저는", name, "입니다.")
print("나이는", age, "살이고, 좋아하는 과목은", subject, "입니다.")
<예제>
num = 10
if num > 10:
print("10보다 큽니다.")
elif num == 10:
print("10입니다.")
else:
print("10보다 작습니다.")
개념 설명
if : 주어진 조건이 참일 때 실행elif : 앞선 조건이 거짓일 경우 + 추가로 조건 검사else : 위의 조건이 거짓일 때 실행for 변수 in 반복가능한_객체:
실행할_코드
for i in [1,2,3]:
print(i)
출력값
1
2
3
<range()>
for i in range(5): # 0부터 4까지
print(i)
출력값
0
1
2
3
4
<예제>
for i in range(1, 6):
print(i)
count = 1
while count <= 5:
print(count)
count += 1 # count = count + 1와 동일
설명:
사용자에게 단을 입력받습니다.
for 루프를 사용해 1부터 9까지 반복합니다.
각 반복마다 곱셈 결과를 출력합니다.
예시 코드:
dan = int(input("출력할 구구단의 단을 입력하세요: "))
print(f"=== {dan}단 구구단 ===")
for i in range(1, 10):
print(f"{dan} x {i} = {dan * i}")
설명:
while 루프 또는 for 루프를 사용하여 1부터 50까지 반복합니다.
각 숫자가 홀수인지(num % 2 != 0) 확인한 후 출력합니다.
예시 코드 (while 루프 사용):
num = 1
print("1부터 50까지의 홀수:")
while num <= 50:
if num % 2 != 0:
print(num, end=" ")
num += 1
print() # 줄바꿈
예시 코드 (for 루프 사용):
print("1부터 50까지의 홀수:")
for num in range(1, 51):
if num % 2 != 0:
print(num, end=" ")
print() # 줄바꿈
def 키워드 사용:
def greet():
print("안녕하세요!")
인자(매개변수): 함수가 외부에서 받는 값
반환값: 함수의 작업 결과를 돌려주는 값
def add(a, b):
result = a + b
return result
호출 예:
sum_result = add(3, 4) # 결과: 7
print(sum_result)
len(): 문자열이나 리스트 등 길이를 반환
word = "파이썬"
print(len(word)) # 결과: 3
range(): 숫자 범위를 생성하는 함수 (반복문과 자주 사용)
for i in range(1, 6):
print(i) # 1부터 5까지 출력
sum(): 리스트나 튜플의 모든 요소의 합을 계산
numbers = [1, 2, 3, 4]
print(sum(numbers)) # 결과: 10
문법과 예제:
square = lambda x: x * x
print(square(5)) # 결과: 25
정의 간결성: 이름 없이 한 줄에 정의할 수 있어요.
용도: 복잡한 로직이 아니라 단순 계산이나 임시 함수를 만들 때 유용해요.
제한: 여러 줄의 복잡한 처리는 일반 함수(def)로 작성해야 해요.

설명:
함수 이름은 square로 정합니다.
인자로 숫자 하나를 받고, 그 숫자의 제곱을 계산하여 반환합니다.
예시 코드:
def square(num):
return num * num
print("4의 제곱:", square(4)) # 결과: 16
print("7의 제곱:", square(7)) # 결과: 49
=> lambda로도 바꿔보기!!
함수 이름은 average로 정합니다.
두 개의 숫자를 인자로 받아 합을 2로 나눠 반환합니다.
def average(a, b):
return (a + b) / 2
print("평균:", average(10, 20)) # 결과: 15.0
print("평균:", average(5, 15)) # 결과: 10.0
리스트(List)
특징:
생성 및 예제:
fruits = ["사과", "바나나", "오렌지"]
print(fruits[0]) # 첫 번째 요소: "사과"
fruits.append("포도") # 새 요소 추가
print(fruits)
튜플(Tuple)
특징:
생성 및 예제:
colors = ("빨강", "초록", "파랑")
print(colors[1]) # 두 번째 요소: "초록"
# colors[1] = "노랑" -> 오류 발생 (튜플은 수정 불가)
특징:
생성 및 예제:
student = {"이름": "철수", "나이": 12, "과목": "수학"}
print(student["이름"]) # 결과: "철수"
# 값 수정
student["나이"] = 13
print(student)
특징:
생성 및 예제:
numbers = {1, 2, 3, 3, 4}
print(numbers) # 중복된 3은 한 번만 출력됨
# 집합 연산: 두 집합의 교집합
set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1 & set2) # 결과: {2, 3}
리스트와 튜플의 사용법과 인덱싱, 수정 가능 여부를 체험합니다.
# 좋아하는 과일 리스트
fruits = ["사과", "바나나", "오렌지"]
print("처음 과일 리스트:", fruits)
# 새로운 과일 추가
fruits.append("포도")
print("추가 후 과일 리스트:", fruits)
# 과일에 어울리는 색상 튜플 (튜플은 수정 불가)
fruit_colors = ("빨강", "노랑", "주황", "보라")
print("과일 색상 튜플:", fruit_colors)
한 학생의 정보(이름, 나이, 좋아하는 과목)를 딕셔너리로 저장
여러 학생의 정보를 리스트에 저장
전체 학생의 이름만 출력하거나, 특정 조건(예: 나이가 13살 이상인 학생)으로 필터링
# 학생 정보 딕셔너리 생성
student1 = {"이름": "철수", "나이": 12, "과목": "수학"}
student2 = {"이름": "영희", "나이": 13, "과목": "과학"}
student3 = {"이름": "민수", "나이": 14, "과목": "영어"}
# 여러 학생을 리스트로 저장
students = [student1, student2, student3]
# 모든 학생의 이름 출력
print("학생 이름:")
for student in students:
print(student["이름"])
# 나이가 13살 이상인 학생 필터링
print("\n나이가 13살 이상인 학생:")
for student in students:
if student["나이"] >= 13:
print(student["이름"], "-", student["과목"])
파일 입출력
모듈 사용
math,datetime) 사용법
자주 사용되는 모듈
# 파일에 쓰기
with open("example.txt", "w", encoding="utf-8") as file:
file.write("안녕하세요, 파이썬 파일 입출력!")
# 파일 읽기
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print("파일 내용:", content)
import datetime
# 현재 날짜와 시간 가져오기
now = datetime.datetime.now()
timestamp = now.strftime("%Y-%m-%d %H:%M:%S")
# 파일에 저장
with open("time_info.txt", "w", encoding="utf-8") as file:
file.write("현재 시간: " + timestamp)
# 파일 읽기 및 출력
with open("time_info.txt", "r", encoding="utf-8") as file:
content = file.read()
print("저장된 시간 정보:", content)
사용자로부터 이름, 나이, 좋아하는 과목을 입력 받습니다.
입력 받은 정보를 딕셔너리에 저장하고, 이를 리스트에 추가합니다.
리스트에 저장된 모든 학생의 정보를 출력하는 함수를 작성합니다.
예외적으로 나이가 0 이하이거나 비정상적인 값이면 경고 메시지를 출력합니다.
def add_student(students_list):
name = input("이름을 입력하세요: ")
age = int(input("나이를 입력하세요: "))
subject = input("좋아하는 과목을 입력하세요: ")
# 나이 검증
if age <= 0:
print("올바른 나이를 입력하세요.")
return
student = {"이름": name, "나이": age, "과목": subject}
students_list.append(student)
print(f"{name} 학생 정보가 추가되었습니다.")
def print_students(students_list):
print("\n=== 저장된 학생 정보 ===")
for student in students_list:
print(f"이름: {student['이름']}, 나이: {student['나이']}, 과목: {student['과목']}")
# 메인 실행 코드
students = []
n = int(input("추가할 학생 수를 입력하세요: "))
for i in range(n):
add_student(students)
print_students(students)
학생 이름과 여러 과목의 성적을 입력받아 딕셔너리에 저장합니다.
각 학생의 평균 성적을 계산하는 함수를 작성합니다.
전체 학생 중 평균 성적이 일정 점수(예: 70점) 이상인 학생을 필터링하여 출력합니다.
추가로, 람다 함수를 사용하여 리스트의 정렬(평균 성적 기준)을 진행해 봅니다.
def input_student():
student = {}
student["이름"] = input("학생 이름을 입력하세요: ")
# 과목과 성적을 입력받고 딕셔너리에 저장 (예: 3과목)
subjects = {}
for i in range(1, 4):
subject_name = input(f"{i}번째 과목 이름을 입력하세요: ")
score = float(input(f"{subject_name} 과목의 성적을 입력하세요: "))
subjects[subject_name] = score
student["과목"] = subjects
return student
def calculate_average(student):
scores = student["과목"].values()
return sum(scores) / len(scores)
def print_high_achievers(students, threshold=70):
print(f"\n평균 성적이 {threshold}점 이상인 학생:")
for student in students:
avg = calculate_average(student)
if avg >= threshold:
print(f"{student['이름']} - 평균 성적: {avg:.2f}")
# 메인 실행 코드
num_students = int(input("학생 수를 입력하세요: "))
students = []
for _ in range(num_students):
students.append(input_student())
# 각 학생의 평균 성적 계산 및 출력
for student in students:
avg = calculate_average(student)
print(f"{student['이름']}의 평균 성적은 {avg:.2f}점입니다.")
# 조건에 따른 필터링
print_high_achievers(students)
# 평균 성적을 기준으로 내림차순 정렬 (람다 함수 사용)
students_sorted = sorted(students, key=lambda s: calculate_average(s), reverse=True)
print("\n평균 성적 순으로 정렬:")
for student in students_sorted:
print(f"{student['이름']} - 평균 성적: {calculate_average(student):.2f}")
예시 질문 1:
질문: "함수에서 인자와 반환값의 차이점이 무엇인가요?"
답변:
"인자는 함수에 외부에서 전달하는 값이며, 함수 내부에서 이 값을 사용하여 연산이나 작업을 수행합니다. 반환값은 함수가 작업을 마치고 결과로 돌려주는 값입니다. 예를 들어, def add(a, b): return a + b에서 a와 b는 인자이고, a + b의 결과가 반환값입니다."
예시 질문 2:
질문: "리스트와 튜플의 차이는 무엇인가요? 왜 둘 다 있어야 하나요?"
답변:
"리스트는 데이터를 자유롭게 추가, 수정, 삭제할 수 있는 가변(mutable) 자료구조입니다. 반면 튜플은 한 번 생성하면 수정할 수 없는 불변(immutable) 자료구조로, 데이터의 변경이 필요 없을 때 사용하여 안정성을 높일 수 있습니다. 각각의 특성을 고려하여 상황에 맞게 사용합니다."
예시 질문 3:
질문: "람다 함수는 왜 사용하나요? 일반 함수와 비교해서 어떤 장점이 있나요?"
답변:
"람다 함수는 짧은 코드로 간단한 기능을 구현할 때 사용합니다. 이름을 지정하지 않고 한 줄로 정의할 수 있어 간결하게 사용할 수 있지만, 복잡한 로직을 처리할 때는 일반 함수가 더 적합합니다. 주로 일회성 작업이나 함수를 인자로 넘길 때 유용합니다."
💡변수와 자료형:
숫자, 문자열, 불린 값 등 다양한 데이터 타입과 이를 저장하는 변수의 개념
💡연산자 및 입출력:
산술, 비교, 논리 연산자를 사용하여 데이터 처리와 print(), input() 함수로 사용자와 상호작용
💡제어문:
조건문(if, elif, else)과 반복문(for, while)을 활용하여 프로그램의 흐름 제어
💡함수:
def 키워드를 사용한 함수 정의, 인자와 반환값, 내장 함수, 그리고 람다 함수의 간단한 사용법
💡기본 자료구조:
리스트, 튜플, 딕셔너리, 집합을 이용해 데이터를 구조적으로 저장하고 처리하는 방법
💡 Codecademy의 Python 강좌
💡 Coursera의 파이썬 기초 강좌
💡『점프 투 파이썬』 – 초보자를 위한 친절한 입문서
💡『파이썬 코딩 도장』 – 실습 중심의 학습 자료
💡Python 공식 문서 – 상세한 언어 스펙과 다양한 예제