Python

[Python] 의미 및 관련 예제 풀이

PEAZH 2023. 9. 4. 08:40
반응형

 

Python?

  • 기본적으로 인터프리터(해석기) 위에서 실행되는 언어
  • 인터프리터 언어는 프로그램의 코드가 한 라인씩 순서대로 해석되고 실행되기를 반복함
  • 코드가 완전히 작성되지 않아도 작성된 부분까지 테스트를 위해 컴파일 없이 바로 실행이 가능함
  • 들여 쓰기 조심해야 하고 세미클론이 없으며 확장자는 py

 

 

Python의 기본 형태

# hi 출력
print("hi")

# for문으로 0부터 9까지 출력
for i in range(10):
	print(i) # 들여쓰기를 하지 않으면 오류 발생
    
# 변수 선언 : 뒤에 오는 자료형에 따라서 데이터 타입이 결정됨
a = 15
type(a) # <class 'int'>

 

 

Python의 자료형

 

01) 숫자 (Numeric)

 - 정수(Integer), 실수(Float), 복소수(Complex)

# 정수
a = 3
b = -2
type(a) # <class 'int'>
type(b) # <class 'int'>

# 실수
a = 3.14
b = 8.9
type(a) # <class 'float'>
type(b) # <class 'float'>

# 복소수
a = 3 + 4j
type(a) # <class 'complex'>

 

02) 문자열 (Str)

 - 단어나 문장이 작은따옴표('')나 큰 따옴표("")로 감싸져 있는 형태

 - ':(클론)'을 사용하여 문자열을 자를 수 있음

 - str [시작 문자:자를 문자:step]

 - 자를 문자를 안 적어주면 문자의 끝까지 가고 step을 안 적어주면 기본값은 1임

# 문자열
a = "hi"
b = "Hello, World!"
type(a) # <class 'str'>
type(b) # <class 'str'>

s = "가나다라마바사"
print(s[0]) # 가
print(s[0:2]) # 가나
print(s[1:2]) # 나
print(s[5:6]) # 바
print(s[-1]) # 사
print(s[-1:-5]) # 공백
print(s[-3:]) # 마바사
print(s[-3:-2]) # 마

 

03) 논리 (Boolean)

 - True, False의 값으로 조건을 판단할 때 사용하며 첫 글자는 대문자 형태

# 논리
a = True
type(a) # <class 'bool'>

print(5 > 100) # False

x, y = 100, 200
print(x != y) # True

 

04) 리스트 (List)

 - 다수의 데이터를 저장하는데 사용되며 리스트에 포함된 데이터는 '요소(Element)'라고 부름

 - 리스트는 각 요소의 고유한 위치(Index)를 가지고 이 위치를 통해 개별 요소에 접근함

 - '[]'를 사용하여 정의함

# 리스트
a = [1, 2, 3]
type(a) # <class 'list'>
print(a[0]) # 1
print(a[1]) # 2
print(a[2]) # 3

arr = [10, 20, 30, 40, 50]
print(type(arr)) # <class 'list'>
print(arr) # [10, 20, 30, 40, 50]
print(arr[0]) # 10
print(arr[3:]) # [40, 50]
print(arr[3:-1]) # [40]

# append로 값 추가하기
arr.append(60)
print(arr) # [10, 20, 30, 40, 50, 60]
arr.insert(1, 11) # 인덱스[1] 위치에 11을 넣어줌
print(arr) # [10, 11, 20, 30, 40, 50, 60]

# 값 삭제하기
arr.remove(11)
print(arr) # [10, 20, 30, 40, 50, 60]

# 역순정렬
arr.reverse()
print(arr) # [60, 50, 40, 30, 20, 10]

# 순차정렬
arr.sort()
print(arr) # [10, 20, 30, 40, 50, 60]

# extend로 값 추가하기
temp = [10, 11, 12]
temp.extend('html')
print(temp) # [10, 11, 12, 'h', 't', 'm', 'l']

 

05) 튜플 (Tuple)

 - 리스트와 비슷하지만, 한 번 생성되면 변경이 불가함

 - 모든 자료형이 다 들어갈 수 있으며 통일되지 않아도 되고, 다른 튜플까지 포함할 수 있음

 - 불변의 데이터 구조를 지니고 각 요소의 Index를 가지고 있음

 - '()'를 사용하여 정의함

# 튜플
a = (1, 2, 3, 4)
type(a) # <class 'tuple'>

a = (10, False, 3.14, "Hi")

print(a[0]) # 10
print(a[1]) # False
print(a[2]) # 3.14
print(a[3]) # Hi
print(a[4]) # 없는 인덱스는 오류 발생
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    print(a[4])
IndexError: tuple index out of range

# a의 길이 출력
print(len(a)) # 4

# (a의 길이 - 1) = a[3] 출력
print(a[len(a)-1]) # Hi

# 중간에 값을 바꾸기 : 오류발생 (불변 객체라서 값 변경 불가)
a[0] = 100
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    a[0] = 100
TypeError: 'tuple' object does not support item assignment

# for문으로 출력
for i in a:
    print(i)
    # 10
    # False
    # 3.14
    # Hi
    
# a 튜플에 b를 연결하기
a = (100, 200, 400, "hi", False)
b = a + (500, 600)
print(b) # (100, 200, 400, 'hi', False, 500, 600)
print(b[3:]) # ('hi', False, 500, 600)

 

06) 딕셔너리 (Dictionary)

 - 키(key)-값(value)이 쌍으로 구성된 형태로 키는 값을 식별하는 역할을 하며 동일한 키를 가질 수 없음

 - '{}'를 사용하여 정의함

# 딕셔너리
d = {"name": '한여름', 'age': 20, 'home': False}
print(d) # {'name': '한여름', 'age': 20, 'home': False}

# 데이터 타입
print(type(d)) # <class 'dict'>

# key가 name인 value 출력
print(d['name']) # 한여름

# key 출력
print(d.keys()) # dict_keys(['name', 'age', 'home'])

# value 출력
print(d.values()) #d ict_values(['한여름', 20, False])

print(type(d.keys())) # <class 'dict_keys'>
print(type(d.values())) # <class 'dict_values'>

# key에 해당하는 항목 포함 여부 (정확히 일치해야 True가 나옴)
print('addr' in d.keys()) # False
print('age' in d.keys()) # True

 

07) 집합 (Set)

 - 순서와 중복이 없는 값들이 모인 데이터 구조로, 인덱스로 접근이 불가함

 - 특정 값이 포함되어 있는지 확인할 수 있음

 - '{}'를 사용하여 정의함

# set
s = {10, 20, 30, 40, 30}
print(s) # {40, 10, 20, 30} 중복값 허용하지 않음

# add로 값 추가하기 (순서는 랜덤으로 추가됨)
s.add(50)
print(s) # {40, 10, 50, 20, 30}
print(type(s)) # <class 'set'>

# update로 값 추가하기
s.update([60, 70, 80])
print(s) # {70, 40, 10, 80, 50, 20, 60, 30}

# add는 한 가지의 값, update는 여러가지의 값을 추가할 수 있음

# 70이라는 값 삭제
s.remove(70) 
print(s) # {40, 10, 80, 50, 20, 60, 30}

# 뽑히는 순서가 없기 때문에 인덱스를 쓸 수가 없음
for i in s:
    print(i)
    # 40
    # 10
    # 80
    # 50
    # 20
    # 60
    # 30

# set에서 값이 있는지 확인
# 70이 s안에 있어?
print(70 in s) # False
print (30 in s) # True
print (11 not in s) # True

 

08) 함수

 - 반복적으로 사용되는 부분을 효율적으로 관리하기 위해서 사용

 - def라는 키워드를 사용하여 입력

# 함수
def 함수_이름(매개변수):
	수행할_문장1
	수행할_문장2
	...
# 들여쓰기가 이어지면 함수를 계속 정의한다는 뜻

# 예제 1
def print():
	abc
	cd
	efg
type(print) # <class 'function'>

# 예제 2
def add(a, b):
	return a+b
a = 3
b = 4
c = add(a, b) # add(3, 4)의 리턴값을 c에 대입
print(c) # 7

# 예제 3
class MyPass:
    def byPass(self): # 기본적으로 자기 자신이라는 뜻으로 self를 붙여줌
        print("pass")

myPass = MyPass()
myPass.byPass()  # pass

 

09) 얕은 복사 vs 깊은 복사

 - 얕은 복사는 주소 값을 참조함

 - 깊은 복사를 완전히 다른 객체로 만들어줌

# 얕은 복사
s = {10, 80, 50, 40, 20, 60, 30}
s1 = s
s.remove(40)
# 값이 같음
print(s) # {10, 80, 50, 20, 60, 30}
print(s1) # {10, 80, 50, 20, 60, 30}

# 깊은 복사
s2 = s.copy() # 다른 객체로 만들어줌
s.add(100)
print(s) # {100, 10, 80, 50, 20, 60, 30}
print(s2) # {80, 50, 20, 10, 60, 30} 100의 값이 추가가 안됨

 

 

Python 관련 예제

 

 

예제 1 : 데이터 타입 'list []'

 

a = "REMEMBER NOVEMBER"

b = a[:3] + a[12:15]
print(b) # REMEMB

c = "R AND %s" % "STR" # %s는 뒤에 내용을 그 자리에 넣음
print(c) # R AND STR

print(b+c) #REMEMBR AND STR

 

 

예제 2 : 데이터 타입 'set {}'

 

a = {'일본','중국','한국'}
a.add('베트남')
a.add('중국') # 중복값 허용 안함
a.remove('일본')
a.update(['홍콩','한국','태국'])

# 순서가 없음
print(a) # {'베트남', '홍콩', '한국', '태국', '중국'}

 

 

예제 3 : 데이터 타입 'list []'

 

# 파이썬의 print() 기본 출력은 엔터
# 엔터 안 치고 값이 옆에 붙이기
print('출력', end='') 
print('출력', end='')
print('출력', end='')
#출력출력출력

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0]) # [1, 2, 3]
print(lol[2]) # [6, 7, 8, 9]
print(lol[2][2]) # 8

print(lol[2][1]) # 7
for sub in lol:
    for item in sub:
        print(item, end=' ')
    print()
# 1 2 3
# 4 5
# 6 7 8 9

 

 

예제 4 : 데이터 타입 'function'

 

def exam(num1, num2=2):
    print('a=', num1, 'b=', num2)
    # 문자열을 나열하여 출력하면 중간에 공백이 들어감
    
exam(20) # 값이 안 들어왔을 때 자동으로 num2는 2가 됨
# a= 20 b= 2

 

 

예제 5 : 데이터 타입 'list [], function'

 

class good:
    li = ["seoul","kyeonggi","inchon","daejeon","daegu","pusan"]
    
g = good()
str01 = ''
for i in g.li:
    str01 = str01 + i[0]

print(str01) # skiddp

 

 

반응형