오늘은 파이썬공부를 해보았다. 정리를해보즈아~!
a = 100
str = "반가워요 ^^"
낯설다.
자바나 C와 달리 변수를 선언할 떄
자료형을 지정하여 선언하는것이 아닌 변수에 저장되는 값의 의해서 자료형이 지정되는 다변성 기억공간을 가지고있다!
한마디로 알아서 자료형을 가진다는말이다 ! 똑똑하다잉!!
a = 100
print(a) #100
출력문도 다른언어와는 다르게 심플하니 보기좋다.
출력물을 이쁘게 만들어주는 format()함수도 있다.
str = "안녕!!"
print("str:{}".format(str)) #"str:go for it!"
{}안에 들어갈 값을 포맷안에 넣으면된다. 간단하니 좋다잉
문자열 내부에 특정문자가 등장하는 횟수를 반환
찾지못한다면 0을 반환
ex
1.str.count(특정문자) : 변수에서 특정문자가 포함된 횟수를 반환
문자열 내부에서 특정문자가 존재하는 인덱스를 반환
찾고싶은 문자가 없다면 -1을 반환
찾은 특정문자가 하나이상이면 맨처음에 찾은 인덱스를 반환
ex
str.find(특정문자)
str.find(특정문자, start)
str.find(특정문자, start, end)
4. str.rfind(특정문자) : 이친구는 find와는 다르게 찾는 값이 하나이상이라면 마지막인덱스를 반환
기존에 있는 문자를 새로운 문자열로 변경하는 기능이다.
변경된 문자열을 반환해준다!
ex
1. **str.replace(기존문자열, 변경하고싶은문자열)**
1. **str.replace(기존문자열, 변경하고싶은문자열, 갯수)**
배열생성
ar = [1, 2, 3, 4,]
ar = [10, 3, 14, "방가방가"]
print("ar1={}".format(ar1)) #ar1=[1, 2, 3, 4]
print("ar2={}".format(ar2)) #ar2=[10, 3, 14, 'TEST']
배열합치기
ar3 = ar1+ar2
print("ar3={}".format(ar3)) #ar3=[1, 2, 3, 4, 10, 3, 14, 'TEST']
추출
인덱스값으로 접근하기
ar = [100,20,30,3.3,"방가방가"]
var1 = ar[3];
print("ar[3]={}".format(var1)) #ar[3]=3.3
배열에 가장마지막 요소에 값 추출하기
ar = [100,20,30,3.3,"방가방가"]
var2 = ar[len(ar)-1]
print("ar[len(ar)-1]={}".format(var2)) #ar[len(ar)-1]=방가방가
변경가능한(mutable) : list - [값], set - {값}, dict - {키 : 값, ...}
변경불가능한(immutable) : tuple, int float, bool, string
ex
List : [값1, 값2, ..., 값n]
배열과 같고 순서를 가짐
append
test[1]
ex
Tuple : (값1, 값2, ..., 값n)
List와 같지만 읽기전용 / 상수화 되어서 움직인다.
count
index
ex
Set : {값2, 값2, ..., 값n}
List와 유사하지만 교집합 구분
set()
add
remove
frozenset : 변경불가한 set구조
ex
dist(키1=값1, 키2=값2, .., 키n=값n) Map구조와 비슷
{키1:값1, 키2:값2, .., 키n:값n} Json구조와 비슷
키와 값이 쌍을 이루어 저장된
del
get
keys
values
items
key_list = list(keys) : 뽑아낸 key들을 list에 담기
자바와같이 힙과 스택으로 나뉜다고한다.
파이썬은 객체가 생성된 때 주소를 할당받는다.
그리고 객체를 비교할 때가 있는데 이 때는 ID라는 함수를 사용하여 객체의 ID 비교를하게 가장 확실한 방법이다.
var1 = 100
var2 = 200
var3 = var1
ar = list[10,20,30,40]
str = "반가워요"
print("var1={}, id(var1)={}".format(var1, id(var1)))
print("var2={}, id(var2)={}".format(var2, id(var2)))
print("var3={}, id(var3)={}".format(var3, id(var3)))
print("str={}, id(str)={}".format(str, id(str)))
print("ar={}, id(ar)={}".format(ar, id(ar)))
var1 += 200
print("var1={}, id(var1)={}".format(var1, id(var1)))
print("var3={}, id(var3)={}".format(var3, id(var3)))
**출력내용**
var1=100, id(var1)=2855172902224
var2=200, id(var2)=2855172905424
var3=100, id(var3)=2855172902224
str=반가워요, id(str)=2855174686064
ar=list[10, 20, 30, 40], id(ar)=2855174537920
var1=300, id(var1)=2855173940880
var3=100, id(var3)=2855172902224
리스트는 기본적으로 주소를 복사받아 같은 곳을 참조하도록 되어있다.
하지만 가끔은 별도의 기억공간에 따로 복사하여 처리하고 싶을때가 있다. 이 때는 위처럼 copy모듈을 import하여 deepcopy를 사용해야한다!
from copy import deepcopy
list3 = deepcopy(list1)
print("list3 = deepcopy(list1) 처리 후")
print("id(list1){0}:{1}".format(list1,id(list1)))
print("id(list3){0}:{1}".format(list3,id(list3)))
**출력내용**
list3 = deepcopy(list1) 처리 후
id(list1)[100, 200, 300]:1634136029760
id(list3)[100, 200, 300]:1634139403136
if(조건식):
조건에 만족시 수행하는 영역
(들여쓰기)문장1
(들여쓰기)문장2
elif(조건식2:)
조건에 만족시 수행하는 영역
(들여쓰기)문장1
(들여쓰기)문장2
else:
모든조건에 불만족시 수행하는 영역
for 변수 in 반복자:
(들여쓰기)반복할 문장1
(들여쓰기)반복할 문장2
for문과 상관없이 수행할 문장
while 조건식:
(들여쓰기)조건에 만족시 수행할 문장1
(들여쓰기)조건에 만족시 수행할 문장1
ar1 = [1, 2, 3, 4, 5]
str = "ABCDEF"
for i in ar1:
print(i)
print("********************************")
for i in str:
print(i)
print("********************************")
i = 0
while i < len(ar1):
print(ar1[i])
i += 1
print("********************************")
i = 0
while i <= 10:
print(i)
i += 1
range(시작값, 종료값+1, step값(생략시 기본값 1))
1~10까지 반복처리될 범위객체를 만든다면
range(1, 11, 1)
str = ""
for i in range(1, 11,1):
str += "{} ".format(i)
print(str)
**출력결과**
1 2 3 4 5 6 7 8 9 10
str1 = input("나이를 입력해주세요")
age = int(str1)
print(type(age))
var = str(age)
print(type(var))
**출력결과**
나이를 입력해주세요20
<class 'int'>
<class 'str'>