본문 바로가기
정보처리기사

[정처기실기] 프로그래밍 언어 활용 Python 기초

by 공불러 2023. 7. 11.
728x90
반응형

[정처기실기] 프로그래밍 언어 활용 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
    728x90
    반응형

    댓글