[SECTION 07. 파이썬 기초 문법 - 함수]
def 키워드로 정의합니다.def greet():
print("안녕하세요!")
print("파이썬 함수에 오신 것을 환영합니다.")
print("이 함수는 단순히 인사를 합니다.")
greet()
greet()
print("함수 호출 완료!")
# 매개변수, return 모두 없는 함수
def printHello():
print("Hello World")
printHello()
# 매개변수는 O, return이 없는 함수
def printName(name):
print("Hello " + name)
printName("김수한")
return을 사용하면 결과값을 호출한 곳으로 돌려줍니다.def add(a, b):
result = a + b
return result
x = add(3, 5)
print("3 + 5 =", x)
y = add(10, 20)
print("10 + 20 =", y)
def min_max(nums):
return min(nums), max(nums)
numbers = [4, 7, 1, 9, 3] # 리스트
low, high = min_max(numbers) #1, 9
print("리스트:", numbers)
print("최솟값:", low)
print("최댓값:", high)
def calc(a, b, func):
return func(a, b)
def add(x, y):
return x + y
def mul(x, y):
return x * y
print("덧셈:", calc(3, 4, add))
print("곱셈:", calc(3, 4, mul))
def greet(name, formatter):
return formatter(name)
def simple_format(n):
return f"안녕하세요, {n}!"
def excited_format(n):
return f"반가워요, {n}!!!"
print(greet("Alice", simple_format))
print(greet("Bob", excited_format))
lambda 키워드를 이용한 한 줄 함수 (익명 함수)square = lambda x: x * x
print("3 제곱:", square(3))
print("7 제곱:", square(7))
students = [("Lee", 40), ("hancoding", 25), ("Kim Suhan", 19)]
# 나이 기준 정렬
students.sort(key=lambda s: s[1])
print("나이순 정렬:", students)
# 이름 길이 기준 정렬
students.sort(key=lambda s: len(s[0]))
print("이름 길이순 정렬:", students)
open("파일명", "모드")로 파일을 열고, read()/write() 사용"r"(읽기), "w"(쓰기), "a"(추가)f = open("test.txt", "w", encoding="utf-8")
f.write("Hello, Python!\n")
f.flush()
f.write("파일 입출력 연습입니다.\n")
f.close()
print("파일 쓰기 완료")
f = open("test.txt", "r", encoding="utf-8")
lines = f.readlines()
f.close()
for line in lines:
print("읽은 줄:", line.strip())
두 수를 매개변수로 받아 합과 곱을 구하는 함수를 정의하고 실행하세요.
def calc(a, b):
return a + b, a * b
x = int(input("첫 번째 정수:"))
y = int(input("두 번째 정수:"))
result1, result2 = calc(x, y)
print(f"합: {result1}, 곱:{result2}")학생 이름과 점수를 입력받아 딕셔너리 형태로 저장한 뒤, 평균 점수를 구하는 프로그램을 함수로 작성하세요.
dict = {} # 딕셔너리
def inputCommand():
print("1. 학생 등록")
print("2. 학생 목록")
print("0. 프로그램 종료")
cmd = int(input("명령어 입력:"))
return cmd
def printStudent(dict):
for name, score in dict.items():
print(f"학생 이름: {name} / 학생 점수: {score}")
def insertStudent(dict):
name = input("학생 이름:")
score = int(input("학생 점수:"))
dict[name] = score
while True:
cmd = inputCommand()
if cmd == 1:
insertStudent(dict)
elif cmd == 2:
printStudent(dict)
elif cmd == 0:
print("프로그램 종료")
break
else:
print("존재하지 않는 명령어입니다.")
students.txt 파일에 아래 세 줄을 저장하는 프로그램을 작성하시오.
# 입력 예시
홍길동, 90
김철수, 85
이영희, 95
f = open("students.txt", "w", encoding="utf-8")
f.write("홍길동, 90\n")
f.write("김철수, 85\n")
f.write("이영희, 95")
f.close()
위에서 작성한 students.txt 파일을 읽어서 한 줄씩 화면에 출력하시오.
# 출력 예시
홍길동, 90
김철수, 85
이영희, 95
f = open("students.txt", "r", encoding="utf-8")
lines = f.readlines()
f.close()
for line in lines:
print(line.strip())
students.txt 파일을 읽어 점수의 총합과 평균을 구하시오.
# 출력 예시
총점: 270
평균: 90.0
f = open("students.txt", "r", encoding="utf-8")
lines = f.readlines()
f.close()
total = 0
count = 0
for line in lines:
lst = line.split(",")
name = lst[0]
score = int(lst[1].strip())
total += score
count += 1
print("점수의 총합:", total)
print(f"점수의 평균: {total / float(count):.2f}")
[SECTION 08. 파이썬 기초 문법 - 클래스]
class Person:
def __init__(self, name, age):
self.name = name # 속성(필드)
self.age = age
def introduce(self): # 메소드
print(f"안녕하세요, 저는 {self.name}이고 나이는 {self.age}살입니다.")
p1 = Person("Alice", 21)
p2 = Person("Bob", 25)
p1.introduce()
p2.introduce()
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
print(f"{self.name}({self.breed})가 멍멍 짖습니다!")
dog1 = Dog("초코", "푸들")
dog2 = Dog("바둑이", "진돗개")
dog1.bark()
dog2.bark()
__init__): 객체가 생성될 때 자동 실행되는 메서드__del__): 객체가 소멸될 때 자동 실행되는 메서드class Student:
def __init__(self, name):
self.name = name
print(f"{self.name} 학생이 등록되었습니다.")
s1 = Student("철수")
s2 = Student("영희")
class Temp:
def __init__(self): # 생성자
print("객체가 생성되었습니다.")
def __del__(self): # 소멸자
print("객체가 소멸되었습니다.")
t = Temp() # 객체 생성
print("작업 중...")
print("작업 중...")
print("작업 중...")
del t
print("작업 중...")
print("작업 중...")
print("작업 중...")
print("프로그램 종료")
class Counter:
count = 0
def __init__(self, name):
self.name = name
Counter.count += 1
c1 = Counter("첫 번째")
# 완전 새로운 필드 변수
c1.count = 100
c2 = Counter("두 번째")
# 공유하는 count
print("Counter의 count:", Counter.count)
# C1만 소유하고 있는 count
print("C1의 count:", c1.count)
# 공유하는 count
print("Counter의 count:", Counter.count)
class Car:
wheels = 4 # 모든 차에 공통 적용되는 클래스 변수
def __init__(self, brand):
self.brand = brand
car1 = Car("Hyundai")
car2 = Car("Kia")
print("Car의 바퀴 수:", Car.wheels)
print("car1:", car1.brand, car1.wheels)
print("car2:", car2.brand, car2.wheels)
class Animal:
def speak(self):
print("동물이 소리를 냅니다.")
class Dog(Animal):
def speak(self):
print("멍멍!")
class Cat(Animal):
def speak(self):
print("야옹!")
dog = Dog()
cat = Cat()
dog.speak()
cat.speak()
class Person:
def __init__(self, name):
self.name = name
def introduce(self):
print(f"안녕하세요, 저는 {self.name}입니다.")
class Student(Person):
def __init__(self, name, major):
super().__init__(name) # 부모 생성자 호출
self.major = major
def introduce(self):
super().introduce()
print(f"제 전공은 {self.major}입니다.")
s = Student("민수", "컴퓨터공학")
s.introduce()
# 부모 클래스
class Animal:
def speak(self):
print("소리를 냅니다.")
# 자식 클래스 (오버라이딩)
class Dog(Animal):
def speak(self): # 부모의 speak()를 덮어씀
print("멍멍!")
class Cat(Animal):
def speak(self): # 부모의 speak()를 덮어씀
print("야옹!")
# 실행
dog = Dog()
cat = Cat()
dog.speak() # 멍멍!
cat.speak() # 야옹!
super()를 사용합니다.# 부모 클래스
class Animal:
def speak(self):
print("소리를 냅니다.")
# 자식 클래스 (오버라이딩)
class Dog(Animal):
def speak(self):
super().speak() # 부모의 메서드 실행
print("멍멍!") # 자식의 추가 동작
dog = Dog()
dog.speak()