[정처기실기] 프로그래밍 언어 활용 Python 기초
목차
* 데이터 타입 없이 코드 작성 가능
파이썬이 비교적 쉬운 이유는 데이터 타입을 지정하지 않고 변수를 정할 수 있다는 점이다.
파이썬 산술연산자
연산자 | 연산자 이름 | 예시 | 결과 |
+ | 덧셈 | 3 + 5 | 8 |
- | 뺄셈 | 7 - 2 | 5 |
* | 곱셈 | 4 * 6 | 24 |
/ | 나눗셈 | 10 / 3 | 3.333... |
// | 몫 구하기(mod 연산자) | 10 // 3 | 3 |
% | 나머지 구하기(홀,짝 구할때 많이 씀) | 10 % 3 | 1 |
** | 거듭제곱 | 2 ** 3 | 8 |
abs() | 절댓값 구하기 | abs(-5) | 5 |
mod 연산자를 **로 표현하는 것은 파이썬에서만 가능
언어 | ** 연산자 사용 예시 | 다른 대안 |
파이썬 | 2 ** 3는 8을 반환 | |
Java | Math.pow(2, 3)는 8.0을 반환 | |
C | pow(2, 3)는 8.0을 반환 |
연산자 활용 문제 예시
짝수 선택하기 코드
답이 "%"일 경우가 많음
for num in range(1, 11):
if num % 2 == 0:
print(num)
이 코드는 1부터 10까지의 숫자 중 짝수만 출력합니다. range(1, 11)은 1부터 10까지의 범위를 나타내며, for 반복문을 통해 범위 내의 숫자를 하나씩 가져옵니다. 그리고 if 문을 사용하여 해당 숫자가 짝수인지 검사한 후, 짝수인 경우에만 출력합니다.
출력 결과
2
4
6
8
10
String관련 연산자
String은 문자열을 말함. 문자열은 각각이 주소지를 갖는 변수가 됨. (list)
a = "hellow world"
print(a)
-- hellow world 출력 ---
print(a*5)
--hellow worldhellow worldhellow worldhellow worldhellow world 출력 --
주소지를 갖는 다는 것이 아직은 헷갈릴 수 있지만, 데이터는 실제 하드웨어인 RAM에 저장되고 특정 주소에 저장이 되어 있다고만 알면됨. 이 사실은 각 주소지에 있는 데이터를 불러와 읽을 수 있음을 이야기하며, 이를 인덱싱(Indexing)이라고 부름.
a라는 변수에 hellow
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
h | e | l | l | o | w | (빈칸) | w | o | r | l | d |
내가 궁금한 위치를 물어보면 해당 값을 불러와줌
*파이썬은 슬라이스를 반대로 번호를 매겨줌, 마지막 방에 있는 주소는 반드시 -1임. 이를 이용하면 내가 원하는 범위의 값을 마음껏 가지고 올 수 있음
String 인덱싱
fruits = ["apple", "banana", "orange", "grape", "kiwi"]
print(fruits[0]) # 첫 번째 요소에 접근
print(fruits[2]) # 세 번째 요소에 접근
print(fruits[-1]) # 마지막 요소에 접근
apple
orange
kiwi
슬라이싱
[a:b]
뒤에 숫자는 포함이 되지 않음
뒷 숫자가 비어 있으면 [4:]
특정 값을 가져오고 싶을 때, 앞의 정보부터 가져오고 싶다. 엑셀의 len과 동일함.
fruits = ["apple", "banana", "orange", "grape", "kiwi"]
print(fruits[1:4]) # 인덱스 1부터 3까지의 요소를 가져옴
print(fruits[:3]) # 인덱스 0부터 2까지의 요소를 가져옴
print(fruits[2:]) # 인덱스 2부터 끝까지의 요소를 가져옴
print(fruits[:]) # 리스트 전체를 가져옴
리스트(list)
선언 방법 및 기본 함수
리스트는 대괄호 (Square brackets)[]로 표현, a = [10, 20, 30]
len()
리스트의 요소 개수를 반환합니다.
fruits = ["apple", "banana", "orange"]
print(len(fruits)) # 출력: 3
append()
리스트의 끝에 새로운 요소를 추가합니다.
fruits = ["apple", "banana", "orange"]
fruits.append("grape")
print(fruits) # 출력: ['apple', 'banana', 'orange', 'grape']
insert()
지정한 인덱스에 새로운 요소를 삽입합니다.
fruits = ["apple", "banana", "orange"]
fruits.insert(1, "grape")
print(fruits) # 출력: ['apple', 'grape', 'banana', 'orange']
remove()
리스트에서 첫 번째로 일치하는 값을 삭제합니다.
fruits = ["apple", "banana", "orange"]
fruits.remove("banana")
print(fruits) # 출력: ['apple', 'orange']
pop()
pop은 뽑아서 가지고 온다는 것으로 기억하면 쉽습니다. 리스트의 지정한 인덱스의 요소를 삭제하고 반환합니다. 인덱스를 지정하지 않으면 마지막 요소를 삭제하고 반환합니다. 아래는 1번지의 banana를 뽑아서 가지고 가는 코드입니다.
fruits = ["apple", "banana", "orange"]
removed_fruit = fruits.pop(1)
print(removed_fruit) # 출력: 'banana'
print(fruits) # 출력: ['apple', 'orange']
index()
리스트에서 첫 번째로 일치하는 값의 인덱스를 반환합니다. 몇 번지에 있는지 확인하는 코드입니다.
fruits = ["apple", "banana", "orange"]
index = fruits.index("banana")
print(index) # 출력: 1
sort()
리스트의 요소들을 정렬합니다.
fruits = ["orange", "apple", "banana"]
fruits.sort()
print(fruits) # 출력: ['apple', 'banana', 'orange']
reverse()
리스트의 요소들의 순서를 반대로 뒤집습니다.
fruits = ["apple", "banana", "orange"]
fruits.reverse()
print(fruits) # 출력: ['orange', 'banana', 'apple']
count()
count() 함수는 리스트에서 지정한 값을 가진 요소의 개수를 반환합니다.|
fruits = ["apple", "banana", "orange", "banana"]
banana_count = fruits.count("banana")
print(banana_count) # 출력: 2
extend()
extend() 함수는 리스트에 다른 리스트나 이터러블(iterable) 객체의 모든 요소를 추가합니다.
fruits = ["apple", "banana"]
more_fruits = ["orange", "grape"]
fruits.extend(more_fruits)
print(fruits) # 출력: ['apple', 'banana', 'orange', 'grape']
del 함수
특정 주소지의 값을 변경하는 방법 및 삭제하는 방법
#리스트
numbers = [1, 2, 3, 4, 5]
print(numbers) # 출력: [1, 2, 3, 4, 5]
del numbers[2]
print(numbers) # 출력: [1, 2, 4, 5]
#딕셔너리
student = {"name": "John", "age": 25, "country": "USA"}
print(student) # 출력: {'name': 'John', 'age': 25, 'country': 'USA'}
del student["age"]
print(student) # 출력: {'name': 'John', 'country': 'USA'}
변경
1. 리스트 변경:
my_list = [1, 2, 3, 4, 5]
# 요소 추가
my_list.append(6)
print(my_list) # 출력: [1, 2, 3, 4, 5, 6]
# 요소 수정
my_list[2] = 7
print(my_list) # 출력: [1, 2, 7, 4, 5, 6]
# 요소 삭제
del my_list[3]
print(my_list) # 출력: [1, 2, 7, 5, 6]
2. 튜플 변경: 튜플은 기존 데이터를 변경할 수없음, 아래는 삽입하는 간접적 변경 방법임
my_tuple = (1, 2, 3, 4, 5)
# 튜플 간접적 변경
new_tuple = my_tuple + (6,)
print(new_tuple) # 출력: (1, 2, 3, 4, 5, 6)
3. 딕셔너리 변경:
my_dict = {"name": "John", "age": 25, "country": "USA"}
# 요소 추가
my_dict["city"] = "New York"
print(my_dict) # 출력: {'name': 'John', 'age': 25, 'country': 'USA', 'city': 'New York'}
# 요소 수정
my_dict["age"] = 30
print(my_dict) # 출력: {'name': 'John', 'age': 30, 'country': 'USA', 'city': 'New York'}
# 요소 삭제
del my_dict["country"]
print(my_dict) # 출력: {'name': 'John', 'age': 30, 'city': 'New York'}
2차원 리스트
생성방법
2차원 리스트를 순회(iterate)하는 방법 중 하나는 for 문에서 두 개의 변수를 사용하여 각각의 요소를 가져오는 것입니다.
range(start, stop, step):
range() 함수는 정수의 시퀀스를 생성합니다. 주어진 범위 내에서 반복할 수 있는 값을 반환합니다.
start는 시작 값, stop은 종료 값 바로 전 값, step은 증가하는 값의 간격을 의미합니다.
for i in range(1, 10, 2):
print(i)
enumerate(iterable, start):
enumerate() 함수는 인덱스와 값을 함께 반환하는 이터러블 객체를 생성합니다.
iterable은 반복 가능한 객체(리스트, 튜플, 문자열 등)를 의미하며, start는 인덱스 시작 값을 설정합니다. 기본값은 0입니다.
fruits = ["apple", "banana", "orange"]
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)
jagged list
Jagged list는 2차원 리스트에서 각 행의 열의 개수가 동일하지 않은 리스트를 말합니다. 즉, 각 행의 길이가 다른 2차원 리스트를 의미합니다. 일반적인 2차원 리스트는 각 행마다 동일한 열의 개수를 가지지만, jagged list는 각 행마다 다른 열의 개수를 가집니다.
jagged_list = [[1, 2], [3, 4, 5], [6, 7, 8, 9]]
튜플
튜플(Tuple)은 변경 불가능한(immutable) 시퀀스형 데이터 타입입니다. 즉, 한 번 생성된 튜플은 수정할 수 없는 특징을 가지고 있습니다. 튜플은 괄호 ()로 묶어서 표현하며, 각 요소는 콤마 ,로 구분됩니다.
튜플은 다음과 같은 특징을 가지고 있습니다:
- 변경 불가능성 (Immutable): 튜플은 한 번 생성되면 요소들을 추가, 삭제, 수정할 수 없습니다. 즉, 읽기 전용 데이터를 표현하기에 적합합니다.
- 인덱싱 (Indexing): 튜플은 0부터 시작하는 인덱스를 사용하여 각 요소에 접근할 수 있습니다.
- 순회 (Iteration): for 문을 사용하여 튜플의 요소들을 순회할 수 있습니다.
여러 타입의 요소 (Mixed Types): 튜플은 여러 가지 데이터 타입의 요소들을 포함할 수 있습니다. 예를 들어, 숫자, 문자열, 리스트 등 다양한 타입의 요소를 하나의 튜플에 담을 수 있습니다.
- ()로 작성. 하나만있을땐 ,를 써줘야함.
- 특징* 삭제불가, 수정 불가, 변경 불가, 삽입, 수정 모두 불가
- 인덱싱, 슬라이싱 가능
- 튜플*3 = 튜플 내 데이터 3번 반복
person = ("John", 25, "USA")
print(person[0]) # 출력: John
print(person[1]) # 출력: 25
print(person[2]) # 출력: USA
for item in person:
print(item)
John
25
USA
John
25
USA
딕셔너리
딕셔너리(Dictionary)는 파이썬에서 사용되는 가변적인(mutable) 데이터 타입으로, 키(key)와 값(value)의 쌍으로 이루어진 데이터 구조입니다. 딕셔너리는 중괄호 {}로 묶어서 표현하며, 각 키와 값은 콜론 :으로 구분됩니다.
딕셔너리는 다음과 같은 특징을 가지고 있습니다
- 키-값 쌍 (Key-Value Pair): 딕셔너리는 각 요소가 키와 값의 쌍으로 구성됩니다. 키는 고유하고 변경 불가능한(immutable) 데이터 타입이어야 하며, 값은 어떠한 데이터 타입도 가질 수 있습니다.
- 변경 가능성 (Mutable): 딕셔너리는 요소를 추가, 삭제, 수정할 수 있습니다. 따라서 데이터를 동적으로 관리하거나 변경해야 할 때 유용합니다.
- 순서의 없음 (Unordered): 딕셔너리는 요소들의 순서를 보장하지 않습니다. 따라서 인덱스를 사용하여 요소에 접근할 수 없으며, 키를 사용하여 값을 조회하고 조작합니다.
- 유연한 구조: 딕셔너리는 키를 사용하여 값을 저장하고 검색하기 때문에 빠른 조회 속도를 제공합니다. 또한, 키는 고유해야 하므로 중복된 키를 가지지 않습니다.
딕셔너리 필요성 : 리스트와 튜플은 방번호를 정확히 알 수 없다. 기억하기 좋지 않다. 반드시 0번지부터 배정.
딕셔너리는 {}로 지정
키(Key) 조회
딕셔너리에서 특정 키를 사용하여 값을 조회할 수 있습니다.
student = {"name": "John", "age": 25, "country": "USA"}
print(student["name"]) # 출력: John
값(Value) 조회
딕셔너리에서 특정 값이 있는지 확인하기 위해서는 in 연산자를 사용합니다.
student = {"name": "John", "age": 25, "country": "USA"}
if "USA" in student.values():
print("USA exists in the dictionary")
키-값 쌍 조회
딕셔너리의 모든 키-값 쌍을 순회하기 위해서는 items() 메서드를 사용합니다. 이 메서드는 키와 값을 함께 반환하는 이터러블 객체를 생성합니다.
student = {"name": "John", "age": 25, "country": "USA"}
for key, value in student.items():
print(key, value)
키 존재 여부 확인
딕셔너리에 특정 키가 있는지 확인하기 위해서는 in 연산자를 사용합니다.
student = {"name": "John", "age": 25, "country": "USA"}
if "age" in student:
print("age exists in the dictionary")
값 존재 여부 확인
딕셔너리에 특정 값이 있는지 확인하기 위해서는 in 연산자를 사용하고, values() 메서드를 사용하여 값들로 이루어진 리스트를 생성합니다.
student = {"name": "John", "age": 25, "country": "USA"}
if "USA" in student.values():
print("USA exists in the dictionary")
- 지정 방법
- a = {}
- a[번지이름] = '데이터'
- 키와 값으로 이루어진 데이터 형태
- 키를 까먹었으면, a.keys()
- 값을 찾고 잎으면 values
- 키와 값을 같이 찾고 싶으면 .items
- a[key]
- key in a true false
- *동일값을 입력했을 대, 최근 값이 나타남
student = {"name": "John", "age": 25, "country": "USA"}
print("name" in student) # 출력: True
print("grade" in student) # 출력: False
'정보처리기사' 카테고리의 다른 글
[정처기실기] 프로그램 언어활용 - JAVA 예제 풀기 (0) | 2023.07.12 |
---|---|
[정치기 실기] 프로그램 활용 코드 예시 문제 | 반복문 | 재귀함수 | 정렬 알고리즘 (0) | 2023.07.11 |
파이썬, JAVA, C의 차이 | 각 언어의 특징 (0) | 2023.07.10 |
[정처기 실기] 1장 요구사항 확인 (0) | 2023.07.10 |
[정보처리기사 실기 우선순위] 합격을 위한 출제 빈도 순 주요 과목 정리 (0) | 2023.07.10 |
댓글