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)
잘 보고 갑니다~!