https://chobopark.tistory.com/273
정보처리기사 실기 시험에서 파이썬 문법이 출제될 가능성이 높은 주제는 다음과 같습니다.
이 외에도 파이썬에서 제공하는 내장 함수와 라이브러리 등에 대한 이해도가 필요합니다. 자주 사용되는 내장 함수로는 print(), len(), range(), sorted() 등이 있습니다.
print() 함수는 문자열, 숫자, 변수 등을 출력할 때 사용합니다. 기본적으로 출력값을 화면에 출력하지만, 파일에 출력하는 것도 가능합니다. 다음은 예시입니다.
pythonCopy code
print("Hello, world!") # 문자열 출력
print(10) # 숫자 출력
x = 3
y = 5
print("x = {}, y = {}".format(x, y)) # 변수 출력
# 여러 값 출력 시 값들 사이에 공백 들어감
# print 함수문이 끝나면 개행 됨
print("a","b","c")
print("d","f","g")
# a b c
# d f g
# print문 출력시 맨 뒤에 붙는 것
print("a","b","c", end="")
print("a","b","c")
# a b ca b c
print("a","b","c", end=" ")
print("a","b","c")
# a b c a b c
print("a","b","c", end="$$")
print("a","b","c")
# a b c$$a b c
# print 출력시 문자 값 사이에 붙는 것
print("010","3701","1394", sep="")
# 01037011394
print("010","3701","1394", sep="-")
# 010-3701-1394
len() 함수는 문자열, 리스트, 튜플, 딕셔너리 등의 길이를 반환합니다. 다음은 예시입니다.
pythonCopy code
string = "Hello, world!"
print(len(string)) # 문자열 길이 출력
my_list = [1, 2, 3, 4, 5]
print(len(my_list)) # 리스트 길이 출력
range() 함수는 지정된 범위의 숫자를 생성하는 함수입니다. 주로 for문에서 사용됩니다. 다음은 예시입니다.
pythonCopy code
for i in range(1, 11):
print(i) # 1부터 10까지 출력
sorted() 함수는 리스트, 튜플, 딕셔너리 등을 정렬합니다. 다음은 예시입니다.
pythonCopy code
my_list = [3, 2, 1, 4, 5]
print(sorted(my_list)) # 오름차순 정렬
print(sorted(my_list, reverse=True)) # 내림차순 정렬
input() 함수는 사용자로부터 입력을 받는 함수입니다. 다음은 예시입니다.
pythonCopy code
name = input("이름을 입력하세요: ")
print("당신의 이름은 {}입니다.".format(name))
"abc-def efg".upper() #ABC-DEF EFG
"abc-def efg".capitalize() #Abc-def efg
"abc-def efg".title() #Abc-Def Efg
s = "Life is too short"
s.split() # 아무것도 없으면 공백을 기준으로 문자열을 나눈다.
['Life', 'is', 'too', 'short']
b = "a:b:c:d"
b.split(':')
['a', 'b', 'c', 'd']
c = "a,b,c,d,e,f,g"
c.split(',', 3) # ,기준으로 3개만 나누고 리스트를 반환함
['a', 'b', 'c', 'defg']
https://tagilog.tistory.com/1046
for 변수 in 시퀀스:
실행할 코드
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
while 조건식:
실행할 코드
x = 0
while x < 10:
x += 1
print(x)
# 리스트 생성
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]
# 요소 추가
my_list.append(8)
# 요소 삽입
my_list.insert(2, 7)
# 요소 제거
my_list.remove(1)
# 요소 추출
popped_element = my_list.pop(3)
# 요소 인덱스 확인
index_of_five = my_list.index(5)
# 요소 개수 확인
count_of_one = my_list.count(1)
# 정렬
my_list.sort()
# 역순으로 뒤집기
my_list.reverse()
# 리스트 초기화
my_list.clear()
a[start : end : step]
start : 시작할 위치
end : 끝낼 위치 (end는 포함하지 않음!! 그 전까지만 포함)
step : 보폭+방향 : 몇개씩 어느 방향으로 끊어서 가져올지
a = ['a', 'b', 'c', 'd', 'e']
// Index References
-------------------------------
| a | b | c | d | e |
-------------------------------
| 0 | 1 | 2 | 3 | 4 | // 양수의 경우
-------------------------------
| -5 | -4 | -3 | -2 | -1 | // 음수의 경우
-------------------------------
a[1:]
# ['b', 'c', 'd', 'e']
# 제일 뒤에서 -1을 시작으로 번호를 앞쪽으로 감소하면서 매긴다.
# -3일 경우 'e'가 -1, 'd'가 -2, 'c'가 -3
a[-3:]
# ['c', 'd', 'e']
# 처음부터 인덱스 1까지 가져오기
a[:2]
# ['a', 'b']
# 처음부터 인덱스 -1전까지, 즉 -2까지 가져오기
a[:-1]
# ['a', 'b', 'c', 'd']
a[2:4]
# ['c', 'd']
# -4 인덱스 부터 -2의 전까지, 즉 -3까지 가져오기
a[-4: -2]
# ['b', 'c']
# 인덱스 1~3까지 값 거꾸로 가져오기
a[3:0:-1]
# ['d', 'c', 'b']
# 2칸씩 건너뛰고 가져오기
a[ : : 2 ]
# ['a', 'c', 'e']
a[ -5 : : 3 ]
#['a', 'd']
# 전체 거꾸로 가져오기
a[ : : -1 ]
# ['e', 'd', 'c', 'b', 'a']
map(함수, 리스트)
누적산
reduce(함수, 시퀀스)
reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
# 10
reduce(lambda x, y: y + x, 'abcde')
# 'edcba'
람다(lambda) 함수는 이름이 없는 익명 함수입니다. 람다 함수는 일반 함수와 같이 입력값을 받아 출력값을 반환하는데, 간단한 함수를 한 줄로 작성할 수 있습니다.
람다 함수의 기본적인 문법은 다음과 같습니다.
lambda 인수: 표현식
예를 들어, 2를 곱하는 함수를 람다 함수로 작성하면 다음과 같습니다.
multiply = lambda x: x * 2
print(multiply(3)) # 6 출력
위의 코드에서, multiply
변수는 람다 함수를 할당한 변수입니다. 이 함수는 인수로 x를 받아 x에 2를 곱한 값을 반환합니다. 따라서 multiply(3)
은 6을 반환합니다.
람다 함수는 주로 filter(), map() 함수와 함께 사용됩니다. 예를 들어, 리스트에서 홀수만 걸러내는 코드를 작성하면 다음과 같습니다.
my_list = [1, 2, 3, 4, 5]
odd_numbers = list(filter(lambda x: x % 2 == 1, my_list))
print(odd_numbers) # [1, 3, 5] 출력
위의 코드에서, filter() 함수는 첫 번째 인수로 조건식을 받습니다. 이 조건식은 람다 함수로 작성됩니다. 람다 함수는 x가 홀수인지 판별하고, 홀수인 경우에만 True를 반환합니다. 따라서, odd_numbers 변수에는 [1, 3, 5]가 할당됩니다.
my_list = [1, 2, 3, 4, 5]
result = list(map(lambda x: x * 2 if x % 2 == 1 else x ** 2, my_list))
print(result)
위의 코드에서, square
변수에 람다 함수를 할당합니다. 이 함수는 입력값 x의 제곱을 반환합니다. 그리고 map() 함수를 사용하여 my_list
의 각 원소에 square
함수를 적용합니다. 마지막으로, 결과값을 리스트로 변환하여 result
변수에 할당합니다. 따라서, result
변수에는 [1, 4, 9, 16, 25]
가 할당됩니다.
(lambda x,y: x + y)(10, 20)
# 30
list(map(lambda x: x ** 2, range(5)))
# [0, 1, 4, 9, 16]
파이썬에서 예외(Exception)란 프로그램이 실행되는 동안 발생하는 문제를 의미합니다. 예외는 보통 프로그래머가 의도하지 않은 상황에서 발생하며, 이러한 예외를 처리하지 않으면 프로그램이 중단될 수 있습니다. 파이썬에서는 try-except 구문을 사용하여 예외를 처리할 수 있습니다.
다음은 파이썬에서 예외를 처리하는 예시입니다.
try:
x = int(input("숫자를 입력하세요: "))
result = 10 / x
print("결과는:", result)
except ValueError:
print("숫자를 입력해야 합니다.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다."
위의 코드에서, 사용자로부터 숫자를 입력받고 이를 변수 x
에 할당합니다. 그리고 10
을 x
로 나눈 값을 result
변수에 할당하고, 이 값을 출력합니다. 하지만, 만약 사용자가 숫자 대신 문자열을 입력하거나, x
에 0
이 입력되는 경우에는 예외가 발생하게 됩니다.
따라서, 이러한 예외를 처리하기 위해 try-except
구문을 사용합니다. try
블록 내부의 코드가 실행되다가 예외가 발생하면, except
블록의 해당하는 예외 처리 코드가 실행됩니다. 위의 코드에서는 ValueError
와 ZeroDivisionError
예외를 처리하기 위해 각각 except
블록을 사용합니다.
만약 사용자가 숫자 5
를 입력하면, 출력 결과는 다음과 같습니다.
숫자를 입력하세요: 5
결과는: 2.0
하지만, 사용자가 0
을 입력하면 다음과 같은 결과가 출력됩니다.
숫자를 입력하세요: 0
0으로 나눌 수 없습니다.
파이썬은 객체지향 프로그래밍(Object-Oriented Programming, OOP)을 지원하는 언어로, 클래스와 객체를 이용한 프로그래밍을 할 수 있습니다. 객체지향 프로그래밍은 데이터와 해당 데이터를 처리하는 메소드(함수)를 하나의 단위로 묶어서 다루는 프로그래밍 패러다임입니다.
파이썬에서 클래스는 객체를 정의하는 틀입니다. 클래스는 멤버 변수(속성)와 멤버 함수(메소드)를 가질 수 있습니다. 객체는 클래스의 인스턴스(instance)이며, 클래스에서 정의한 멤버 변수와 멤버 함수를 상속받아 사용할 수 있습니다.
다음은 파이썬에서 클래스를 정의하는 예시입니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"안녕하세요, 저는 {self.name}이고, {self.age}살입니다.")
위의 코드에서 Person
클래스는 name
과 age
라는 두 개의 멤버 변수를 가지고 있으며, __init__
함수를 통해 이 변수들을 초기화합니다. say_hello
라는 멤버 함수는 객체가 인사하는 메시지를 출력합니다.
위의 클래스를 이용해 객체를 생성하고 사용하는 예시를 보겠습니다.
person1 = Person("홍길동", 20)
person1.say_hello(
위의 코드에서 person1
객체는 Person
클래스의 인스턴스입니다. 이 객체를 생성할 때, __init__
함수에 "홍길동"
과 20
이라는 두 개의 인자를 전달하였습니다. person1.say_hello()
코드는 Person
클래스의 say_hello
메소드를 호출합니다. 이 메소드는 person1
객체의 name
과 age
변수 값을 이용하여 메시지를 출력합니다.
실행 결과는 다음과 같습니다.
안녕하세요, 저는 홍길동이고, 20살입니다.
위와 같이, 객체지향 프로그래밍을 이용하면 클래스와 객체를 이용하여 데이터와 메소드를 한 덩어리로 묶어서 다룰 수 있습니다. 이를 통해 코드의 가독성과 재사용성을 높일 수 있습니다.
class Animal:
def __init__(self, name, species):
self.name = name
self.species = species
def __str__(self):
return f"{self.name} ({self.species})"
class Dog(Animal):
def __init__(self, name):
super().__init__(name, species="dog")
def bark(self):
return "Woof!"
class Cat(Animal):
def __init__(self, name):
super().__init__(name, species="cat")
def meow(self):
return "Meow!"
class Shelter:
def __init__(self):
self.animals = []
def add_animal(self, animal):
self.animals.append(animal)
def get_animals(self):
return self.animals
def get_dogs(self):
return [animal for animal in self.animals if isinstance(animal, Dog)]
def get_cats(self):
return [animal for animal in self.animals if isinstance(animal, Cat)]
def __str__(self):
animal_list = [str(animal) for animal in self.animals]
return f"Shelter with {len(self.animals)} animals: {', '.join(animal_list)}"
shelter = Shelter()
shelter.add_animal(Dog("Fido"))
shelter.add_animal(Cat("Kitty"))
shelter.add_animal(Dog("Buddy"))
shelter.add_animal(Cat("Lucy"))
dogs = shelter.get_dogs()
for dog in dogs:
print(dog.bark())
cats = shelter.get_cats()
for cat in cats:
print(cat.meow())
print(shelter)
# 답
Woof!
Woof!
Meow!
Meow!
Shelter with 4 animals: Fido (dog), Kitty (cat), Buddy (dog), Lucy (cat)