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

[정처기] 비개발자 파이썬 기초 - 6과목 프로그래밍 언어

by 공불러 2024. 4. 14.
728x90
반응형

[비개발자용] 파이썬 기초 - 6과목 프로그래밍 언어

지난 시간은 JAVA에 대한 기초를 공부했습니다. C와 JAVA는 한 시험에 2~3개씩 출제되기 때문에 필수로 확인해야합니다.

생성자, 오버로딩, 오버라이딩 부분은 꼭 확인하시고 상속관계들에 대해 이해하시고 지나가셔야합니다.

 

이번 시간은 파이썬의 기초로 정처기실기에서 1개 정도 출제됩니다. 쉬운 언어이지만, 문법이 JAVA랑 유사하면서 조금씩 다르기 때문에 꼭 확인하셔야합니다. 데이터셋 타입에 대해서 꼭 알아두셔야합니다.

변수 선언할 때 별도의 데이터 타입을 선언하지 않아도 되며, 빅데이터 분석에도 자주 쓰이는 언어입니다. 빅데이터 분석기사를 준비하시는 분들은 함께 알아두시면 좋습니다.

 

목차

    파이썬이란?

    파이썬(Python)은 간결하고 읽기 쉬운 문법을 갖춘 고급 프로그래밍 언어입니다. 귀도 반 로섬(Guido van Rossum)이 개발한 파이썬은 1991년에 처음 공개되었으며, 현재는 다양한 플랫폼에서 지원되고 널리 사용되는 언어 중 하나입니다.

    파이썬 특징

    • 읽기 쉬운 문법: 파이썬은 간결하고 읽기 쉬운 문법을 가지고 있어 학습 곡선이 낮고 코드 작성이 편리합니다. 이로 인해 프로그래머들은 생산성을 높일 수 있습니다.
    • 동적 타이핑: 파이썬은 동적 타이핑을 지원하여 변수의 데이터 타입을 선언하지 않아도 됩니다. 이는 코드 작성을 더욱 간단하게 만들어줍니다.
    • 객체 지향 프로그래밍: 파이썬은 객체 지향 프로그래밍을 지원하여 코드의 재사용성을 높이고 유지보수를 쉽게 만들어줍니다.
    • 풍부한 라이브러리: 파이썬은 풍부한 표준 라이브러리와 다양한 외부 라이브러리를 포함하고 있습니다. 이러한 라이브러리들은 다양한 작업을 수행하는 데 유용하며, 개발 시간을 단축시키고 코드의 품질을 향상시킵니다.
    • 크로스 플랫폼: 파이썬은 다양한 운영 체제에서 동작하며, 이식성이 뛰어납니다. 따라서 윈도우, macOS, 리눅스 등 여러 플랫폼에서 사용할 수 있습니다.
    • 빠른 개발: 파이썬은 빠른 개발과 프로토타이핑에 적합한 언어입니다. 간단한 문법과 높은 수준의 추상화로 인해 개발자는 코드를 빠르게 작성할 수 있습니다.

    파이썬 문법

    사칙연산

    3/2 연산을 하면 1.5로 자동으로 실수형이 나옵니다.

    # 사칙연산 예시
    a = 10
    b = 5
    sum_result = a + b    # 덧셈
    sub_result = a - b    # 뺄셈
    mul_result = a * b    # 곱셈
    div_result = a / b    # 나눗셈

     

    변수 사용

    파이썬에선 변수 타입없이 바로 작성이 가능합니다. 자동으로 할당되기 때문입니다.

    # 변수 사용 예시
    name = "Alice"   # 문자열 변수
    age = 25         # 정수 변수
    height = 175.5   # 실수 변수

    조건문

    파이썬에선 if, elif, else

    각각 if (조건 ) :

    콜론(:)을 붙인다는 것을 기억해주세요

    # 조건문 예시
    score = 85
    
    if score >= 90:
        grade = 'A'
    elif score >= 80:  # elif임을 기억해야함
        grade = 'B'
    elif score >= 70:
        grade = 'C'
    else:
        grade = 'F'
    
    print("Grade:", grade)

    반복문

    for

    for 문은 리스트, 튜플, 문자열 등의 순회 가능한(iterable) 객체를 순회하면서 각 요소에 대해 반복 작업을 수행합니다.

    아래 예시는 fruits 리스트의 각 요소를 순회하면서 각 요소를 출력하는 예시입니다.

    for i in [1,2,3]
    print(i) # 기본이 ln과 같아 개행을 하게됨
    
    #출력
    1
    2
    3

    while

    while 문은 조건이 참(True)인 동안 반복 작업을 수행합니다.

    아래 예시는 i가 5보다 작은 동안에만 i를 출력하고 i를 1씩 증가시키는 반복 작업을 수행합니다.

    여기에서도 조건은 콜론(:)으로 쓰고 들여쓰기한 부분이 while에 포함됩니다.

    i = 0
    while i < 5:
        print(i)
        i += 1

    range

    range() 함수는 연속된 숫자의 시퀀스를 생성하는데 사용됩니다.

    일반적으로 반복문과 함께 사용되어 특정 범위의 숫자를 반복하는 데 유용합니다.

    아래 예시는 0부터 4까지의 숫자를 반복하면서 각 숫자를 출력합니다.

    for i in range(5):  # 0부터 4까지의 숫자를 생성
        print(i)
        
        
        
    print(range(3) # [0,1,2]
    print(range(3,6) # [3,4,5] #시작 3 6까지(나 빼고)
    print(range(3,15,3) # 3부터 15까지(나빼고) 3칸씩 건너뛰어서 3,6,9,12
    
    a=range(1,8,2)
    for i in a:
    	print(i)
    
    #출력
    1
    3
    5
    7

    함수

    파이썬에서 함수는 def 키워드를 사용하여 정의됩니다. 함수 정의는 함수의 이름, 매개변수, 그리고 함수가 수행할 코드 블록으로 구성됩니다.

    • 함수 호출: 함수를 호출하려면 함수의 이름을 사용하고 필요한 매개변수를 전달합니다. 함수가 호출되면 해당 함수의 코드 블록이 실행됩니다.
    • 리턴 값: 함수가 값을 반환(return)하려면 return 키워드를 사용합니다. 함수가 값을 반환하면 해당 값을 가진 호출 부분으로 제어가 반환됩니다.
    def 함수이름(매개변수):
        코드 블록
    
    def greet(name):
        print("Hello, " + name + "!")
    
    함수이름(전달할 매개변수)
    
    greet("Alice")
    
    def add(a, b):
        return a + b
    
    result = add(3, 5)
    print(result)  # 출력: 8

     

     

    정보처리기사 실기 빈출 파이썬 문자열

    문자열 선언, 사용 방법

    문자열(String)은 파이썬에서 가장 자주 사용되는 데이터 타입 중 하나입니다. 문자열은 작은 따옴표(')나 큰 따옴표(")로 감싸져 있습니다.

    str1 = 'Hello, World!'    # 작은 따옴표로 선언
    str2 = "Python Programming"    # 큰 따옴표로 선언
    
    # 문자열 사용 방법
    print(str1[0])    # 출력: 'H'
    
    #슬라이싱
    print(str2[7:18])    # 출력: Programming
    
    prin(str1+str2) #출력 Hello, World!Python Programming

     

    문자열 함수

    파이썬은 문자열을 다루기 위한 다양한 내장 함수를 제공합니다. 몇 가지 자주 사용되는 문자열 함수에 대해 설명하겠습니다.

    join

    • join() 함수는 문자열 리스트를 지정된 구분자(separator)로 연결하여 하나의 문자열로 반환합니다.
    • 문법: '구분자'.join(문자열 리스트)
    fruits = ['apple', 'banana', 'cherry']
    result = ', '.join(fruits)
    print(result)  # 출력: 'apple, banana, cherry'

    partition

    • partition() 함수는 지정된 구분자(separator)를 기준으로 문자열을 세 부분으로 나누어 튜플로 반환합니다.
    • 문법: 문자열.partition(구분자)
    • 구분자를 기준으로 세 구역으로 나뉘게됨 (구분자가 발견되면 구분)
    • 구분자도 출력됨
    text = "Python is a powerful programming language"
    parts = text.partition('is')
    print(parts)  # 출력: ('Python ', 'is', ' a powerful programming language')

    split

    • split() 함수는 지정된 구분자(separator)를 기준으로 문자열을 분할하여 리스트로 반환합니다.
    • 문법: 문자열.split(구분자)
    • 구분자를 기준으로 모두 나눠지게됨
    • 구분자는 출력하지 않음
    text = "Python is a powerful programming language"
    words = text.split(' ')
    print(words)  # 출력: ['Python', 'is', 'a', 'powerful', 'programming', 'language']

    format

    • format() 함수는 데이터타입 지정자입니다.
    • %d, %s, %c, %f는 포맷 문자열을 나타내는 서식 지정자(format specifier)입니다. \
    age = 25
    print("나이: %d" % age)  # 출력: '나이: 25'
    
    name = "Alice"
    print("이름: %s" % name)  # 출력: '이름: Alice'
    
    initial = 'A'
    print("이니셜: %c" % initial)  # 출력: '이니셜: A'
    
    height = 175.5
    print("키: %f" % height)  # 출력: '키: 175.500000'

    len

    • len() 함수는 문자열의 길이를 반환합니다.
    • 문자열의 글자 수나 리스트의 요소 개수 등을 세는 데 사용됩니다.
    • 문법: len(문자열)
    • 1부터 셈
    text = "Python is awesome!"
    length = len(text)
    print(length)  # 출력: 18

    find

    • find() 함수는 문자열 내에서 지정된 부분 문자열(substring)을 찾고, 그 부분 문자열의 첫 번째 인덱스를 반환합니다. 부분 문자열이 없는 경우 -1을 반환합니다.
    • 문법: 문자열.find(부분 문자열)
    • 찾을 때는 배열 0번지부터
    text = "Python is a powerful programming language"
    index = text.find('powerful')
    print(index)  # 출력: 11

    upper

    • upper() 함수는 문자열의 모든 문자를 대문자로 변환한 새로운 문자열을 반환합니다.
    • 문법: 문자열.upper()
    text = "Hello, World!"
    uppercase_text = text.upper()
    print(uppercase_text)  # 출력: 'HELLO, WORLD!'

    lower

    • lower() 함수는 문자열의 모든 문자를 소문자로 변환한 새로운 문자열을 반환합니다.
    • 문법: 문자열.lower()
    text = "Hello, World!"
    lowercase_text = text.lower()
    print(lowercase_text)  # 출력: 'hello, world!'

    lstrip

    • lstrip() 함수는 문자열의 왼쪽(시작 부분)에서 공백을 제거한 새로운 문자열을 반환합니다.
    • 문법: 문자열.lstrip()
    text = "   Hello, World!   "
    new_text = text.lstrip()
    print(new_text)  # 출력: 'Hello, World!   '

    rstrip

    • rstrip() 함수는 문자열의 오른쪽(끝 부분)에서 공백을 제거한 새로운 문자열을 반환합니다.
    • 문법: 문자열.rstrip()
    text = "   Hello, World!   "
    new_text = text.rstrip()
    print(new_text)  # 출력: '   Hello, World!'

    strip

    • strip() 함수는 문자열의 양쪽(시작과 끝 부분)에서 공백을 제거한 새로운 문자열을 반환합니다.
    • 문법: 문자열.strip()
    text = "   Hello, World!   "
    new_text = text.strip()
    print(new_text)  # 출력: 'Hello, World!'

     

    예시

    #len(): 문자열의 길이를 반환합니다.
    print(len(str1))    # 출력: 13
    
    #upper(), lower(): 문자열을 각각 대문자나 소문자로 변환합니다.
    print(str1.upper())    # 출력: 'HELLO, WORLD!'
    print(str2.lower())    # 출력: 'python programming'
    
    #strip(): 문자열의 앞뒤 공백을 제거합니다.
    str3 = "   Hello, Python   "
    print(str3.strip())    # 출력: 'Hello, Python'
    
    #split(): 문자열을 지정한 구분자(delimiter)를 기준으로 분리한 후 리스트로 반환합니다.
    str4 = "apple,banana,grape"
    fruits = str4.split(',')
    print(fruits)    # 출력: ['apple', 'banana', 'grape']
    
    #join(): 리스트의 각 요소를 지정한 구분자로 연결한 문자열을 반환합니다.
    fruits = ['apple', 'banana', 'grape']
    str5 = ','.join(fruits)
    print(str5)    # 출력: 'apple,banana,grape'

     

    파이썬 자료 구조(데이터 타입)

    리스트(List) []

    • 가장 많이 사용, 일반적인 배율로 보면됨
    • 순서가 있는 데이터의 모음으로, 대괄호([])를 사용하여 정의됩니다.
    • 데이터를 추가, 삭제, 수정할 수 있으며, 중복된 값도 포함할 수 있습니다.
    • 리스트는 변경 가능(mutable)한 자료 구조입니다.
    my_list = [1, 2, 3, 4, 5]
    my_list.append(6)          # 요소 추가
    my_list.remove(3)          # 요소 삭제
    my_list[0] = 0             # 요소 수정
    
    print(my_list*3) # 세 번 반복하여 출력합니다. 따라서 출력 결과는 [1, 2, 4, 5, 6, 1, 2, 4, 5, 6, 1, 2, 4, 5, 6]가 됨

     

    리스트 슬라이스

    슬라이스는 데이터를 자른다는 것으로 이해하셔도 좋습니다.

    배열에 있는 인자들을 어떻게 가져올지 정하는 것입니다.

    my_list = [1, 2, 3, 4, 5]
    
    # 리스트의 첫 번째 요소부터 세 번째 요소까지 슬라이스
    slice1 = my_list[0:3]
    print(slice1)  # 출력: [1, 2, 3]
    
    # 리스트의 두 번째 요소부터 끝까지 슬라이스
    slice2 = my_list[1:]
    print(slice2)  # 출력: [2, 3, 4, 5]
    
    # 리스트의 뒤에서 두 번째 요소부터 끝까지 슬라이스
    slice3 = my_list[-2:]
    print(slice3)  # 출력: [4, 5]
    
    # 리스트의 첫 번째 요소부터 뒤에서 두 번째 요소까지 슬라이스 (뒤에서 두 번째 요소는 포함되지 않음)
    slice4 = my_list[:-1]
    print(slice4)  # 출력: [1, 2, 3, 4]
    
    # 리스트의 모든 요소를 역순으로 슬라이스
    slice5 = my_list[::-1]
    print(slice5)  # 출력: [5, 4, 3, 2, 1]

    리스트 추가, 삭제, 병합

    1. 추가(Add)
      • append(): 리스트의 끝에 요소를 추가합니다.
      • extend(): 리스트의 끝에 다른 리스트의 모든 요소를 추가합니다.
    2. 삭제(Delete)
      • remove(): 리스트에서 지정된 값과 일치하는 첫 번째 항목을 삭제합니다.
      • pop(): 리스트의 지정된 인덱스에 해당하는 요소를 삭제하고 해당 요소를 반환합니다.
    3. 병합(Merge)
      • +: 리스트를 연결하여 새로운 리스트를 생성합니다.
      • extend(): 이미 존재하는 리스트에 다른 리스트의 모든 요소를 추가합니다. 
        • 2022년 1회 기출에 extend가 나왔었습니다.
        • 1. 요소를 확장해주는 역할을 하며, 모든 항목을 하나의 요소로 추가 : extend
        • 2. 리스트 내부 요소를 꺼내주는 함수, 해당 함수를 호출하면 리스트에서 해당 값을 삭제하면서 리턴시켜준다.: pop
        • 3. 리스트 내부의 요소의 순서를 뒤집어주는 역할을 한다 : reverse
    # 리스트 생성
    my_list = [1, 2, 3]
    
    # 추가
    my_list.append(4)      # [1, 2, 3, 4]
    my_list.extend([5, 6]) # [1, 2, 3, 4, 5, 6]
    
    # 삭제
    my_list.remove(3)      # [1, 2, 4, 5, 6]
    my_list.pop(1)         # [1, 4, 5, 6]
    
    # 병합
    new_list = my_list + [7, 8]  # [1, 4, 5, 6, 7, 8]
    my_list.extend([9, 10])      # [1, 4, 5, 6, 7, 8, 9, 10]

     

    리스트 검색 방법

    인덱싱(Indexing)

    리스트 내의 특정 위치에 있는 요소에 접근할 수 있습니다. 인덱스는 0부터 시작하며, 음수 인덱스는 뒤에서부터 요소를 가져옵니다.

    아래 코드에서 첫 번째 줄은 'apple' 문자열이 리스트에서 처음으로 발견되는 인덱스를 출력합니다. 결과는 0입니다. 두 번째 줄은 'banana' 문자열이 리스트에서 발견된 횟수를 출력합니다. 결과는 2입니다.

    list = ['apple', 'banana', 'cherry', 'banana']
    print(list.index(apple))   # 출력: 0 - 0번지에 있음
    print(list.count(banana))   # 출력: 2 - 2개 있음

    in 키워드

    in 키워드를 사용하여 리스트에 특정 요소가 포함되어 있는지 확인할 수 있습니다.

    my_list = ['apple', 'banana', 'cherry']
    print('banana' in my_list)  # 출력: True

    count() 메서드

    count() 메서드를 사용하여 리스트에서 특정 요소의 개수를 세어줍니다.

    my_list = ['apple', 'banana', 'cherry', 'banana']
    print(my_list.count('banana'))  # 출력: 2

     

    + 메서드

    리스트 객체의 + 메서드는 두 개의 리스트를 연결하여 새로운 리스트를 반환합니다. 이 연산은 두 리스트를 이어 붙이는 역할을 합니다.

    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    result = list1 + list2
    print(result)  # 출력: [1, 2, 3, 4, 5, 6]

    튜플(Tuple) ()

    • 리스트와 유사하지만, 수정이 불가능(immutable)한 자료 구조입니다. 소괄호(())를 사용하여 정의됩니다.
    • 데이터를 추가, 삭제, 수정할 수 없으며, 중복된 값도 포함할 수 있습니다.
    • 튜플은 불변성(immutability)으로 인해 보다 안전하게 데이터를 관리할 수 있습니다.
    my_tuple = (1, 2, 3, 4, 5)

    세트(set) {}

    • 순서가 없고, 중복된 값을 허용하지 않는 자료 구조입니다. 중괄호({})를 사용하여 정의됩니다.
    • 세트는 집합 연산(교집합, 합집합, 차집합 등)을 제공
    • 순서가 없기 때문에 인덱싱이 불가능합니다.
    • 출력은 {}로 출력된다.
    my_set = {1, 2, 3, 4, 5}
    print(my_set)  # 출력: {1, 2, 3, 4, 5}
    
    # add, remove 예시
    my_set = {1, 2, 3, 4, 5}
    my_set.add(6)          # 요소 추가
    my_set.remove(3)       # 요소 삭제

    딕셔너리

    • 키-값(key-value) 쌍으로 데이터를 저장하는 자료 구조입니다. 중괄호({})를 사용하여 정의되며, 각 요소는 콜론(:)으로 구분됩니다.
    • 키는 고유해야 하지만, 값은 중복될 수 있습니다.
    • 딕셔너리는 키를 사용하여 값을 검색하고 관리할 수 있습니다.
    1. values()
      • values() 메서드는 딕셔너리의 값들을 포함하는 딕셔너리 뷰 객체를 반환합니다. 이 뷰 객체는 딕셔너리의 모든 값들을 조회할 수 있습니다.
    2. keys()
      • keys() 메서드는 딕셔너리의 키들을 포함하는 딕셔너리 뷰 객체를 반환합니다. 이 뷰 객체는 딕셔너리의 모든 키들을 조회할 수 있습니다.
    3. items()
      • items() 메서드는 딕셔너리의 키-값 쌍을 포함하는 딕셔너리 뷰 객체를 반환합니다. 이 뷰 객체는 딕셔너리의 모든 키-값 쌍을 조회할 수 있습니다.
    4. get()
      • get() 메서드는 지정된 키에 해당하는 값을 반환합니다. 만약 해당 키가 딕셔너리에 존재하지 않으면 None을 반환합니다. 또한, 기본값을 지정하여 키가 존재하지 않을 경우 해당 기본값을 반환할 수도 있습니다.
    my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York', 'gender': 'female'}
    
    # values() 메서드 사용 예시
    print("Values:", my_dict.values())  # 출력: dict_values(['Alice', 30, 'New York', 'female'])
    
    # keys() 메서드 사용 예시
    print("Keys:", my_dict.keys())  # 출력: dict_keys(['name', 'age', 'city', 'gender'])
    
    # items() 메서드 사용 예시
    print("Items:", my_dict.items())  # 출력: dict_items([('name', 'Alice'), ('age', 30), ('city', 'New York'), ('gender', 'female')])
    
    # get() 메서드 사용 예시
    print("Age:", my_dict.get('age'))  # 출력: 30
    print("Country:", my_dict.get('country'))  # 출력: None (키가 존재하지 않음)
    print("Country:", my_dict.get('country', 'USA'))  # 출력: USA (기본값으로 지정한 값 반환)
    728x90
    반응형

    댓글