문제를 인식하고 해결방법을 설계(디자인)하고 설계도대로 짜는 사람이 개발자이다!
화재,지진까지 감안하여 건물을 짓는 마음가짐으로 개발해야 한다!
1. 사칙연산
a,b=3,4
더하기 a+b=7
곱하기 a*b=12
제곱 a**b=81
나눗셈 a/b=3/4
나머지 a%b=3
몫 a//b=0
2. str escaping
"I'm a student"
- str 에서는 작은따옴표로 감쌀 수 있지만, 부득히하게 '가 str 내부에서 표현해야 한다면 쌍따옴표가 쓰일 수 있다.
3. data type 및 변환 (float, str)
a=1.3 (float)
len(a) # error! float는 사이즈가 없음
a=3.0
b=str(a*3) # 숫자를 문자로 변환, 다른 변수에 할당하여 재사용, str(a*3) -> str(3.0*3) ->'9.0'
float(b) # 문자열을 숫자로 변환, 9.0
float('Hello') # error!
int('1.0') # error!
4. 문자열 인덱싱
"Hello World"
H e l l o W o r l d
0 1 2 3 4 5 6 7 8 9 10
H e l l o W o r l d
-11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
슬라이싱은 문자열, 리스트, 튜플 등 시퀀스 자료형에서 부분을 추출하는 방법입니다. 슬라이싱의 기본 구문은 `sequence[start:stop:step]`입니다.
- `start`: 슬라이스의 시작 인덱스 (포함, 기본값은 0)
- `stop`: 슬라이스의 끝 인덱스 (포함되지 않음, 기본값은 시퀀스의 길이)
- `step`: 슬라이스의 간격 (기본값은 1)
text = "Hello World"
# "Hello" 추출
slice1 = text[0:5] # "Hello"
# "World" 추출
slice2 = text[6:11] # "World"
# "HloWrd" 추출 (간격 2)
slice3 = text[0:11:2] # "HloWrd"
# "World" 추출 (음수 인덱스 사용)
slice4 = text[-5:] # "World"
5. 문자열 f string
food1='수박'
food2='아이스크림'
food3='떡볶이'
# 나는 수박을 먹었습니다.
f"나는 {food1}를 먹었습니다."
"나는 {food} 먹었습니다.".format(food=food1)
# 나는 수박,아이스크림,떡볶이를 먹었습니다.
"나는 {0}{1}{2} 먹었습니다."format(food1,food2,food3)
# 0,1,2가 인덱스!
6. 숫자,문자 formatting
print("I eat %s apples." % "five") # I eat five apples.
print("I eat %d apples." % 3) # I eat 3 apples.
print("I ate %d rotten apples. so I was sick for %s days." % (5, "three"))
# I ate 5 rotten apples. so I was sick for three days.
pi=3.141592
print("파이는 %.2f" % pi) # 파이는 3.14 # 소수점 2번째까지 표기
7. 문자열 연산 및 함수
- count, find
hw = "Hello, World!"
# 문자 개수 세기
hw.count('o') # 2
hw.count(' ') # 1 , 빈 공간도 문자열이다!
# 해당 문자열 인덱스 (위치정보) 찾기
hw.find("H") # 0
hw.find("k") # -1 (찾는 문자가 없으면 -1 반환)
hw.find('h') # -1 (대소문자 구분)
- 문자열끼리는 더하기만 된다!
h='Hello'
w ='world'
hw = h + ', ' + w + '!' # 'Hello world'
h * w # TypeError: can't multiply sequence by non-int of type 'str'
h -w # TypeError: unsupported operand type(s) for -: 'str' and 'str'
h / w # TypeError: unsupported operand type(s) for /: 'str' and 'str'
- 문자열과 숫자는 곱하기만 됨
h*3 # 'HelloHelloHello'
h/3 # TypeError: unsupported operand type(s) for /: 'str' and 'int'
h+3 # TypeError: can only concatenate str (not "int") to str
h-3 # TypeError: unsupported operand type(s) for -: 'str' and 'int'
- split
hw = "Hello, World!"
hw.split('o') # ['Hell', ', W', 'rld!'] (o를 기준으로 문자열을 나눔)
- upper, lower
hw.upper() # 'HELLO, WORLD!'
hw.lower() # 'hello, world!'
- strip
"Hello World" == " Hello World " # False
"Hello World" == " Hello World ".strip() # True # 문자열 앞뒤 공백 제거
"Hello World" == " Hello World ".lstrip() # True # 문자열 왼쪽 공백 제거
"Hello World" == " Hello World ".rstrip() # True # 문자열 오른쪽 공백 제거
- replace
# replace(바꿀 문자열, 대상 문자열)
# 첫번째 인자의 데이터가 문자열에 있어야 함! 없으면 아무것도 반환하지 않음.
# 두번째 인자의 데이터로 첫번째 인자의 데이터를 대체함.
"Hello World".replace("World", "Python") # 'Hello Python'
8. 묶음/집합
- 리스트: list : 인덱스로 데이터 식별, 수정 가능, 중복 없음
- 튜플: tuple : 수정 불가
- 딕셔너리 : dict : 키로 데이터 식별
- 집합 : set: 중복 있음
8-1. list
- slicing
lst=[1,2,3,4,5]
type(lst) # <class 'list'>
lst[0] # 1
lst[-1] # 5
lst[-1::-2] # [5, 3, 1]
a=[] # 빈 리스트
b=[1,2,3.14]
c=['Life','is']
e=[1,2,3,3.14,'a','b','c']
g=[1,2,3,['python','java','c++']]
c[0:2:5] # ['Life', 'is']
c[0:2:-5] # []
# [시작:끝:단위]
# 단위가 양수면, 끝>시작
# 단위가 음수면, 시작>끝
c[2:0:-5] # ['is']
e[2]*e[-3] # 'aaa
g[3][1] # 'java'
e[1]='b' # [1, 'b', 3, 3.14, 'a', 'b', 'c']
e[1:3]=[1,2] # [1, 1, 2, 3.14, 'a', 'b', 'c']
g[3][1]='c' # [1, 2, 3, ['python', 'c', 'c++']]
- append, extend
# append(추가할 데이터) : 리스트의 맨 마지막에 데이터 추가
# extend(추가할 데이터) : 리스트의 맨 마지막에 리스트 형태로 데이터 추가
a=[1,2,3]
a.append(1) # [1, 2, 3, 1]
a.extend([2,3,4]) # [1, 2, 3, 1, 2, 3, 4]
a.append([2,3,4]) # [1, 2, 3, 1, 2, 3, 4, [2, 3, 4]]
a=[1,2,3]
a.extend([4,5,6]) # [1, 2, 3, 4, 5, 6]
# [1,2,3]+[4] -> [1,2,3,4]+[5] -> [1,2,3,4,5]+[6] -> [1,2,3,4,5,6]
- sort(), reverse()
a=['b','c','g','a']
a.sort() # ['a', 'b', 'c', 'g']
a # ['a', 'b', 'c', 'g']
a.reverse()
a # ['g', 'c', 'b', 'a']
a.count('c') # 1
8-2. tuple
- 수정 / 추가 불가
- ex) 태어날 때부터 정해진 성별 같은 것.
a = tuple()
b=()
c=(1)
d=(1,2)
e=(1,'a',2)
f=(1,'a',(1,2))
c=(1)
type(c) # int
g=(1,) # 콤마가 요소들을 구분하는 역할을 하기 때문에 콤마가 있어야 튜플로 인식
e+e # (1,'a',2,1,'a',2)
e*3 # (1,'a',2,1,'a',2,1,'a',2)
e+3 # TypeError: can only concatenate tuple (not "int") to tuple
8-3. dict
# tuple -> ()
# list -> []
# dict -> {}
# set -> {} or set()
dic1=dict()
dic2={}
dic3 = {
'key':'value',
'name':'pey',
'age':30,
'phone':'010-1234-5678',
"hobby":['soccer','baseball'],
'address':{
'city':'Seoul',
'dong':'Gangnam'
},
'family':('mother','father')
}
dic3['name'] # 'pey'
dic3['phone'][-4:] # 5678
dic3.keys() # dict_keys(['key', 'name', 'age', 'phone', 'hobby', 'address', 'family'])
dic3.values() # dict_values(['value', 'pey', 30, '010-1234-5678', ['soccer', 'baseball'], {'city': 'Seoul', 'dong': 'Gangnam'}, ('mother', 'father')])
dic3.items() # dict_items([('key', 'value'), ('name', 'pey'), ('age', 30), ('phone', '010-1234-5678'), ('hobby', ['soccer', 'baseball']), ('address', {'city': 'Seoul', 'dong': 'Gangnam'}), ('family', ('mother', 'father'))])
'name' in dic3 # True
# key가 존재하는지 확인
dic3.get("vacation","no vacation") # 'no vacation'
dic3.get("name","no name") # 'pey'
dic3['career'] = 'developer' # career라는 key에 developer라는 value 추가
del dic3['career'] # career key 삭제
dic3['age'] = 40 # age key의 value를 40으로 변경
dic3
8-4. 집합 set
- list, tuple, dict 과 다르게 중복이 허용되지 않는다.
- 순서가 없다.
- 교집합 구하기 좋음
set([1,2,2,3,4,4,5]) # {1, 2, 3, 4, 5, 6, 7}
a={1,2,3,4,5}
b={3,4,5,6,7,8}
a&b # {3, 4, 5}
# Difference
# 순서 상관 있음.
difference = a - b
print("Difference (a - b):", difference)
a.difference(b)
# Symmetric Difference
symmetric_difference = a ^ b
print("Symmetric Difference (a ^ b):", symmetric_difference)
a.symmetric_diffence(b)
# Union
# 순서 상관 없음음
union = a | b
print("Union (a | b):", union)
a.union(b)
# Intersection
# 순서 상관 없음
intersection = a & b
print("Intersection (a & b):", intersection)
a.intersection(b)
# Subset
is_subset = a <= b
print("Is a subset of b:", is_subset)
a.issubset(b)
# Superset
is_superset = a >= b
print("Is a superset of b:", is_superset)
# Add an element
a.add(6)
print("Add 6 to a:", a)
# Remove an element
a.remove(6)
print("Remove 6 from a:", a)
# Check if an element is in the set
is_in_set = 3 in a
print("Is 3 in a:", is_in_set)
# Check if an element is not in the set
is_not_in_set = 10 not in a
print("Is 10 not in a:", is_not_in_set)
'개발공부 > SK Networks Family AI bootcamp 강의노트' 카테고리의 다른 글
첫 주차 회고 (1/10) (0) | 2025.01.10 |
---|---|
4일차 [ 파이썬 기초 (퀴즈/반복문/예외처리) ] (0) | 2025.01.10 |
3일차 [ 파이썬 기초(조건문,반복문) ] (0) | 2025.01.09 |
2일차 [파이썬 기초 (가상환경,자료구조(변수,상수,비교연산자,슬라이싱))] (0) | 2025.01.08 |
1일차 [마음잡기 / 개발 환경 셋팅] (1) | 2025.01.07 |