코드네임 :

Python 기초1 (기초자료형) 본문

프로그래밍/Python

Python 기초1 (기초자료형)

비엔 Vien 2024. 2. 24. 17:25

cmd+ opt + N : vscode 단축 (run code)

cmd + ? : 전체 주석

 

파이썬에서 input으로 입력하는 값은 모두 문자열

input(str)
str + 1  # 오류!!!!!
int(str) + 1  # correct!!!

 

sep 옵션

print('1', '2', sep='-')

>>>1-2

 

 

end 옵션 - 자동엔터 방지

 

 

format 사용 (d, s, f) 정수, 문자열, 소수

print('%s %s' % ('one', '2')

==

print('{} {}'.format('one','2')

>>>one 2

 

print('{1} {0}'.format('one','2')

>>> 2 one

 

 

%s 기호 사용법

print('%10s' %('nice')

==

print('{:>10}'.format('nice')

>>>      nice

 

 

print('%-10s' %('nice')

==

print('{:10}'.format('nice')

>>>nice      

 

print('{:>10}'.format('nice')

>>>      nice

 

print('{:_>10}'.format('nice')

>>>______nice

 

 

.은 절삭용

 

print('%.5s' %('pythonstudy')

>>pytho

print('{:10.5}'.('pythonstudy')

>>pytho

 

 

%d 기호 사용법

print('%4d' % (42)

==

print('{:4d}'.format(42)

>>>  42

 

 

%f 기호 사용법

print('%f' % (3.1434343434)

==

print('{:f}'.format(3.1434343434)

>>>  3.143434

print('%06.2f'  % (3.1434343434))

==

print({06.2f}'.format(3.1434343434))

>>003.14

 

 

 

3번 출력 fstring

x = 50
y=100
text= 308276567
n='Lee'

ex1= 'n=%s. s=%s, sum %d' %(n,text,(x+y))
print(ex1)

ex2='n={n}, s={s}, sum={sum}'.format(n=n, s=text,sum=x+y)
print(ex2)

ex3=f'n={n}, s={text}, sum={x+y}'
print(ex3)

//n=Lee. s=308276567, sum 150

print()

#구분기호
m=100000000
print(f'm: {m:,}')

print()

#정렬
# ^ : 가운데, < : 왼쪽, > : 오른쪽
t=20

print(f"t:{t:10}")
print(f"t is at : {t:^10}")
print(f"t is at : {t:<10}")
print(f"t is at : {t:>10}")

print(f"t is at : {t:-^10}")
print(f"t is at : {t:#<10}")

 


 

파이썬은 그냥 변수에 자료형 아무거나 대입하면 알아서 바뀜, int형이었던 변수에 str넣으면 또 자동으로 바뀜

동시선언 가능 ( x=y=z=100)

 

얘도 == 넣고 비교하면 True/False나옴

 

파이썬은 같은 오브젝트참조 : 변수이름은 달라도 들어있는 값이 같으면 id 값이 같음

 

데이터 자료형

int : 정수
float : 실수
complex : 복소수
boo1 : 불린
str : 문자열(시퀀스)
list : 리스트(시퀀스)
tuple : 튜플(시퀀스)
set : 집합
dict : 사전

 

 

변수명으로 사용할수 없는 예약어들

False def if raise
None del import return
True elif in try and else 
is while as except lambda 
with assert finally nonlocal 
break for not class from continue
or global pass

숫자형

 

set : 집합

abs(x) : 절대값

pow(x,y) or x **y : 제곱값

 

형변환 : 자료형(바꿀변수이름)

print(int(True)) >>> 1

 


문자형

 

선언시

str = '~'   or    str = str(~)

 

 

멀티라인 #역슬래시 사용

multi_str = \
'''
String
Multi Line
Test
'''
print(multi_str)


//String
//Multi Line
//Test

 

 

문자열 연산 (더하기 곱하기 가능 +..)

str1 = "Python"
print('y' in str1)  # str1 안에 y라는 문자가 들어있어? (시퀀스 연산자들은 in, not in 사용가능 str list tuple)

>>>True

 

 

문자열 함수 (upper, isalnum, startswith, count, endswith, isalpha...)

#문자열 함수
str_o1 = "python"
str_o2 = "Seoul Daejeon Busan"

print("Capitalize: ", str_o1.capitalize())
print("endswith?: ", str_o1.endswith("e"))
print("replace: ", str_o1.replace("thon", 'Good'))
print("sorted: ", sorted(str_o1))
print("split: ", str_o2.split('!'))

//Capitalize:  Python
//endswith?:  False
//replace:  pyGood
//sorted:  ['h', 'n', 'o', 'p', 't', 'y']
//split:  ['Seoul Daejeon Busan']

 

 

슬라이싱

문자열이름[a:b] # : a ~ b-1까지 , a안쓰면 처음부터, b안쓰면( = len(문자열이름) ) 끝까지

#[a:b:c] : a ~b-1까지 c칸씩 건너뛰어서 가져와라 (즉 a, a+2, a+4, ...)
#c에 -1 쓰면 역으로 1칸씩 이란 뜻임

#[-a] : -a번째부터 마지막 글자(-1)까지

 

아스키 코드로 : ord(문자)  

문자로 : chr(숫자)


리스트 - 순서o, 중복o, 수정o, 삭제 o , 대괄호[ ], 자료형 유지, 리스트안에 리스트 입력 가능

a= [1,2,[abc,def,ghi]]

print(a[-1][0])
>>> abc
# -1이므로 맨뒤에 해당한 리스트 [abc,def,ghi] 가져옴, 거기서 첫번째꺼 가져옴


#if
b= [1,2,3]

print(b[0]+[2])
>>> 4

 

리스트도 인덱스 값 배열이랑 똑같은거 알죠? 0번째 부터 시작

 

a.index(3) ==a[3]

a.insert(위치, 추가할 값)

a.append(추가값) - 맨뒤에 추가

a.pop(빼낼 값) - 해당 원소 빼내서 제거 (얘만 프린트함)- 아무것도 안쓰면 맨뒤값 제거

 


 

튜플 - 순서o, 중복o, 수정x, 삭제 x , 불변!!!!, 소괄호() , 리스트랑 나머지 똑같

정수형 원소가 '하나'일때는 콤마 찍기  a=(1,)

 

리스트로 형변환 가능

d=(1,2,('ace','Base','captain')
print('d - ',list(e[-1][1]))

# d - ['B','a','s','e']

 

#튜플함수

a.index(3) #3번 인덱스에 있는 튜플

a.count(2) #튜플안에 2가 몇개 있나요?

 

팩킹/언팩킹

#팩킹
t=('foo','bar','baz','qux')

print(t)
print(t[0])
print(t[-1])
#>>>('foo', 'bar', 'baz', 'qux')
#>>>foo
#>>>qux


#언팩킹 #하나로 되어있던 튜플을 풀어서 각 원소에 대입
(x1,x2,x3,x4)=t

print(type(x1), type(x2), type(x3), type(x4))
print(x1,x2,x3,x4)
#>>><class 'str'> <class 'str'> <class 'str'> <class 'str'>
#>>>foo bar baz qux

 

딕셔너리 (순서x, 키중복x(같은단어불가), 수정ㅇ, 삭제ㅇ)⭐️

키 값에는 변경 불가능한 정보들만 들어갈 수 있음 -> 키를 list[ ]로 선언하면 에러, 할꺼면 tuple( )로 선언해야..

#선언방법 여러가지

a = {'name': 'Kim', 'phone':'01033337777', 'birth':'122134'}
b= {0:'Hello python'}
c= {'arr':[1,2,3,45]}

d= {
    'Name': 'Kim',
    'city': 'seoul',
    'Age':22
}

f= dict(
    Name='Kim',
    City='Seoul'
    Age=22
)

 

딕셔너리.get() : 해당 키의 '값'을 가져온다

print('a - ', a['name']) #if 딕셔너리에 name 존재 X -> 에러 발생
print('a - ', a.get('name1')) # name1 존재 X -> None 처리

 

딕셔너리 추가 / 변경(수정)

딕션이름['키']='값'
a['address'] = 'seoul'
a['rank']=[1,2,3]

#딕셔너리 키 값 변경
a['원래 있는 키이름'] = 'seoul'

#수정의 또다른 방법
a.update(birth='910924')

 

키와 값을 가져오기

 

## 키 만 가져오는
print('a - ', a.keys())

###dict_keys라는 자료형에서 우리가 필요한 리스트만 가져오게 해줌 (형변환)
print('a - ', list(a.keys())) 

##값만 보여주는 dict_values
print('a - ', a.values())

###dict_values에서 필요한 리스트만 가져오게 해줌
print('a - ', list(a.values()))

 

 

len(딕션이름)으로 키의 개수 셈

 

pop 

딕션이름.pop('키')

popitem() - 랜덤으로 꺼내옴

 

in 연산자

print('a-','birth' in a)
#>>> true
##a에 birth가 있니 없니


집합Set 자료형 (순서 X, 중복 X), 

#선언
a=set()
b= set([1,2,3,4])
d= set([1,2,3,'Pen', 'Cap','Plate'])
e={'foo', 'bar', 'baz'}  #키가 없는 딕셔너리 모양 = set
f={42,'foo', (1,2,3), 3.14}

 

in 연산자 사용 가능

 

튜플, 딕셔너리에서 하는 모든것 할 수 있음

 

 

형변환

#튜플 변환 (set -> tuple)
t = tuple(b) #b를 튜플로
print('t - ', type(t), t)
print('t - ', t[0], t[1:3]) # tuple로 변환되었으므로 슬라이싱 가능

#리스트 변환 (set -> list)
l = list(b)
l2 = list(e)

print('l - ', type(l), l)
print('l2 - ', l2)

 

교집합 과 합집합 과 차집합 과 부분집합

s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])

#교집합
print('s1 &s2 : ', s1 & s2) #>>> {4, 5, 6}
print('s1 & s2 : ', s1.intersection(s2))
print()
#합집합
print('s1|s2 : ', s1 | s2) #>>> {1, 2, 3, 4, 5, 6, 7, 8, 9}
print('s1 | s2 : ', s1.union(s2))
print()
#차집합
print('s1-s2 : ', s1 - s2) #>>> {1, 2, 3}
print('s1-s2 : ', s1.difference(s2))
print()

#부분집합 확인
print(s2.issubset(s1)) # s2의 '모든' 요소가 s1에 포함되어있는지 (부분집합인지)
print(s1.issuperset(s2)) #s1이 s2를 포함하는지

 

데이터 추가/ 제거

#데이터 추가 & 제거
s1 = set([1,2,3,4])
s1.add(5)
print(s1)

s1.remove(2)
print(s1)
s1.discard(3) # 없는 거 지우면 에러남
print(s1)
s1.discard(7) # 얘는  집합에 없는 원소를 지우더라도 예외(에러)가 없음
print(s1)

s1.clear() # 싹 다 지우기
print(s1)

 

 

 

이후 추가적인것 아래 링크 참고

https://wikidocs.net/16043

 

17. dictionary(딕셔너리)

## 1. dictionary(딕셔너리) - 딕셔너리 타입은 immutable한 키(key)와 mutable한 값(value)으로 맵핑되어 있는 순서가 없는 집합입니다. - …

wikidocs.net