프로젝트형 IoT 서비스 개발 4회차/1. 인터페이스 개발

[Day6] 2022-02-03(목) 파이썬 기본5 - 자료구조(튜플, 딕셔너리, 집합), 문자열 - 김서연 강사님

powerstone 2022. 2. 12. 15:23
728x90

 [1] 자료구조

     (1) 리스트(list) : [ ] 

-----------------------이상 이전 수업-------------------------

    (2) 튜플(tuple) : ( )

        - 순서가 있는 데이터구조

        - 인덱싱과 슬라이싱 가능

        - 저장된 데이터의 수정이 불가능

        - 리스트보다 메모리 경제성 있음(수정이 불가능하므로)

        1) 튜플의 생성방법

            변수 = 값1, 값2, 값3...

            변수 = (값1, 값2, 값3...)

            tuple() 함수를 이용하면 자료구조를 튜플로 변경이 가능

            빈 튜플을 만들기

            -> (), tuple()

        2) 튜플의 인덱싱과 슬라이싱

        3) 수정 불가능

    (3) 딕셔너리(dictionary) : { }

        - 키와 value 한 쌍으로 데이터를 저장

        - 순서를 가지고 있지 않다.

        - 인덱싱과 슬라이싱이 불가능

        - 딕셔커리에 항목을 추가, 수정(값만 가능), 삭제가 가능

        1) 딕셔너리 생성방법

            변수 = {key1:value1, key2:value2,... }

            - 키는 튜플의 특성처럼 변경이 불가능

        2) 딕셔너리에 저장된 데이터를 액세스

            딕셔너리 변수[키]        => 딕셔너리에 없는 키 입력 시 에러 발생

            - get(키) : 딕셔너리에 저장된 key에 해당하는 value를 찾아서 리턴

                => 딕셔너리에 없는 키 입력 시 None 리턴, 에러 발생은X

            - keys() : 딕셔너리의 모든 키를 반환

            - values() : 딕셔너리의 모든 값을 리스트로 만들어서 리턴

            - items() : key 와 value를 한 쌍으로 리턴

            - in연산자를 제공

                [형식]

                키 in 딕셔너리

                => 딕셔너리 안에 해당 키가 있는지 여부를 판단해서 True, False를 리턴

    (4) 집합(set): { }

        - 여러가지 데이터를 모아놓은 것

        - 중복이 불가능

        - { } 기호를 사용하며 딕셔너리에서 키만 제외시키고 작업하는 것과 동일

        - { } 로 선언되는 자료구조는 딕셔너리로 인식

        - 빈 집합을 만들 때 { } 로 사용할 수 없다.

        - 빈 집합을 만들 때는 set()를 이용할 수 있다.

 [2] 문자열

     (1) 파이썬에서 문자열 만드는 방법

        ' ', " ", ''' ''', """ """

# 문자열 작성하기
str1 = "python"
str2 = 'python'
str3 = '''
            python
            programming
        '''
str4 = """
            python
            programming
        """
print(str1, type(str1))
print(str2, type(str2))
print(str3)
print(str4)

# 문자열 +, * 연산자
str5 = "python programming"
str6 = " 재밌다."
print(str5+str6)    # 문자열에서 +는 연결 연산자
print(str6 * 2)     # 문자열에서 *는 반복 연산자

# 문자열을 구성하는 문자는 내부적으로 숫자값을 가지고 있다. -> ASCII코드
# 문자를 ASCII로 변환
ch1 = 'a'   # 소문자 a == 97   z == 122
ch2 = 'A'   # 대문자 A == 65   Z == 90
print(ch1)
print(ch2)

# ord() : 문자 -> ASCII
print(ord(ch1))
print(ord(ch2))
print(type(ord(ch2)))

# chr() : ASCII -> 문자
data = 100
print(chr(data))
print(chr(ord(ch1)+3)) # 'a'의 ASCII값+3 에 해당되는 문자로 변경

print(chr(ord(ch1)+3))
print(chr(ord(ch2)+3))
# 문자열의 인덱싱과 슬라이싱
str1 = "python programming"
print(str1)
print("문자열의 길이:", len(str1))
print(str1[0])
print(str1[len(str1)-1])
print(str1[-1])
print(str1[-len(str1)])
print(str1[1:5])
print(str1[:5])
print(str1[5:])
print(str1[:])

# 문자열 하나씩 액세스
for i in str1:
    print("{}({})".format(i, type(i)))
    if i == "p":
        print("결과보기")
    else:
        print("테스트완료")

for i in range(len(str1)):
    print(str1[i], end="")
# 1. 문자열을 입력 받아 거꾸로 출력될 수 있도록 작성하세요
#   입력데이터 : python
#   출력데이터 : nohtyp

str1 = input("입력데이터 : ")
print("출력데이터 : ", end="")
for i in range(len(str1)-1, -1, -1):
    print(str1[i], end="")
print("")

# 2. 입력받은 문자열 중 소문자 a가 있으면 대문자 A로 변경해서 출력하기
#   입력데이터 : python programming
#   출력데이터 : python progrAmming

str1 = input("입력데이터 : ")
for i in str1:
    if i == 'a':
        print('A', end="")
    else:
        print(i, end="")
print("")

# 3. 입력받은 문자열 대신 오른쪽으로 3칸 뒤에 있는 문자의 조합으로 출력하기
#   입력데이터 : abc
#   출력데이터 : def
# ===> 모두 for문을 이용해서 작업하세요.

str1 = input("입력데이터 : ")
for i in str1:
    if i == " ":
        print(i, end="")
    else:
        print(chr(ord(i) + 3), end="")
print("")
728x90