람쥐썬더

[PYTHON] 기본 문법 정리 본문

파이썬

[PYTHON] 기본 문법 정리

람쥐썬더123 2021. 7. 1. 22:59

람쥐

 

- 표현식

  print('~') , print("~")  : print 문 큰따음표 작은따음표 이용해서 내용을 출력

 

  표현식이 하나 이상 모이면 문장

  문장이 모여서 프로그램.

 

 

- 식별자

  기본적으로 예약되어 있는 언어인 키워드(예약어)를 사용하면 안됨.

  공백 포함하지 않음

  특수문자는 언더바( _ ) 만 사용

  공백을 포함 할 수 없음

 

- 자료형

  숫자형 ( 정수 , 실수, 8진수, 16진수 )  [ int, float ]

  문자형 (string) [ str ]

  불린형 (True or False) [ Boolean ]

 

 

 

 

 - 리스트다루기

 

  => 대괄호 [ .... ] 안의 요소를 콤마( , )로 구분하여 순서있게 나열

  인덱싱 : 리스트내의 요소를 가져오는것 ex) list[0], list[3:] 

 

  리스트 정렬하는 내장함수 : sort() <= 오름차순 정렬 ex ) list.sort() 

                                                   내림차순 정렬 ex) sorted( list, reverse = True)

 

  리스트 삭제하기 del list[ i ] => list 안의 인덱스 i 번째 삭제

 

  인덱스 위치 가져오기 : list.index( i )  => 요소중 첫번째 나오는 i라는 요소가 몇번째 있는지 확인

 

  갯수 가져오기 : list.count( i )  => i가 리스트에 몇개 들어있는지 (중복되는 값이 몇개인지)

 

  리스트 확장하기 : list.extend([ args ])  => 기존 리스트 뒤에 요소들을 확장시켜주는것

 

  리스트 추가하기 : list.append( i )  =>  제일 뒤에  i 라는 요소만 추가

 

  리스트 추가하기2 : list.insert( n , i ) => 리스트의 인덱스 0번째 자리에 i 라는 요소 추가하기

 

 

 

 

 

- 튜플 다루기

 

  튜플은 괄호 사용하여 표시 ( ...... ) 하는데 없어도 튜플로 인식한다

  ex) tuple = 1,2,3,4  => 이래도 튜플임

  근데 명백히 다른것. 가장 큰 특징은 한번 정의하면 값을 수정하거나 빼거나 할 수 없다는것
  그야말로 고정값의 개념이라 변하면 안되는 값이 있을땐 튜플을 사용하면 된다

 

  tuple = (1,'a','abc',[1,2,3,4,5],['a','b','c']) 과 같이 튜플안에 리스트가 들어가는 경우도 있음

  이럴때에 튜플 안쪽을 보고싶다면 tuple[3][0] 과 같은식으로 인덱싱 두번 해주면 됨 => 결과값 1

  

  또 특이한 특징으로는 한개의 값을 가질때 콤마가 들어가야함 ex) tuple = (1,)

  튜플로 더하기를 할거면 튜플 + 튜플 하면 됨.

  

 

 

 

 

 

- 딕셔너리(사전)형

  

  중괄호 { ... } 로 표시한다

  아직은 활용하기 좀 어려운 개념 ㅡ ㅅ ㅡ

  키와 값을 하나의 요소로 가지며 순서가 없는 집합 이라고 정의되어있음

  이를테면 a : 1 과같이 하나의 key 에 value가 동반함 둘이 쌍으로 있어야 딕셔너리가 성립

 

  자 예를 들어보자 dict = {'a':1,'b':2,'c':3} 라고 쓰면 딕셔너리 형태임 각자 하나의 키에 밸류가 대응함

  여기서 key값으로 Value 를 찾아보자

  print( dict['a'] ) 라고 한다면 딕셔너리의 a를 찾는것이기 때문에 출력값은 => 1   <<== 이녀석이 a의 밸류임

  

  자 한번 덮어보자 b 라는 키값으로 2라는 밸류값을 바꾸겠다 하면 이런식으로

  dict['b'] = 5 라고 대입을 하면 짜잔 dict = {'a':1,'b':5,'c':3} 가 된다 

 

  이번엔 키 따로 밸류 따로 뽑아보자 

  방법은 keys() 와 values() 를 쓰는것.! 

  dict.keys() , dict.values() 를 프린트 해보면 뭐가 나올까? 직관적이다.

  keys 를 사용한 출력값은 dict_keys(['a', 'b', 'c']) 가 나왔고 

  values 를 사용한 출력값은 옆집 순자이모도 알겠지만 dict_values([1, 5, 3]) 가 나온다

 

  자 이번엔 둘 다 보이게 한번 꺼내보자 뭐로? items() 로~

  dict_items() 를 사용하면 dict_items([('a', 1), ('b', 5), ('c', 3)]) 라는 출력값이 나온다

  근데 이게 리스트나 문자,정수형이 아니라 class 자체가 dict_itmes 이런식으로 나오기떄문에 

  어떻게 써먹을지는 좀 더 생각해보자.. 

 

 

 

 

- Set (집합자료형)

 

  이번엔 집합자료형, 이 친구의 특징은 인덱싱해서 값을 얻을수 없고 필요하면 리스트나 튜플로 변신시켜서 얻어야된다

  중복값을 허용하지 않아서 중복죽일때 많이 쓰이는 듯. (몇번써봄 ㅎ)

  그리고 마찬가지로 순서도 없다.

  예시 ) s1 = set([1,2,5,4,3])  => 프린트 해보면 {1,2,3,4,5} 라고 출력됨 순서가 없음

  인덱싱? 순서가 없는데 인덱싱 어케할건데 아 ㅋㅋ

  두번째 예시 ) s2 = set('Hello') => 프린트 하면 {'H', 'l', 'e', 'o'} 이렇게 나옴 중북되는 l 하나 없애고 나온걸 볼 수 있다

 

 

 

 

-문자열 포맷 코드

 

  이건 그냥 외우자 

  %s  :  문자열

  %c  :  문자 1개

  %d  :  정수

  %f  :  실수

  %o  :  8진수 (사람이름아님ㅎ)

  %x  :  16진수 (얘도ㅎ)

  %%  :  %문자 그 자체 

 

  이건 어떻게 써먹냐면

  '님아 그 %s 강을 건너지 마오'%양쯔  라고 하면 출력은 =>  님아 그 양쯔강을 건너지 마오 이렇게 나온다

  이건 저 안쪽에 양쯔라는 문자열을 넣었기 때문에 %s 쓴거고 강이름이 141강 이런거면 당연히 %d 써야함

  유도리있게 자료형식에 맞춰서 사용해 주면 된다.

 

 

 

 

-포맷활용 자릿수 맞추기(소수점도)

  ex) "%10s" %hi   =>  출력하면 '        hi' 같이 앞의 공백 여덟개 두고 hi가 출력된다

  왜 공백이 10개가 아니라 8개냐면 10개 공백 중에 hi가 두개 먹어서 8개남음 ㅋ

 

  ex) "%-10sjane"%hi    => 출력하면 'hi          jane'은 마찬가지로 10개 공백중 8개 공간이 남고 hi가 오른쪽으로 붙음 

 

  ex)"%0.4f"%3.42134234    =>  출력하면 "3.4213" 이 나온다

  왜 why? 소수점 4자리까지만 출력한다는 것이기 때문

  ex)"%10.4f"%3.42134234 는 뭐가나올까    =>  출력하면 "     3.4213" 이 나온다

  이건 또 왜 why? 10개의 공간에서 소수점 4번째 자리수까지만 출력하는 것이기 때문

 

 

 

-문자열 관련 함수

 

  조금 보긴 했지만 다시 복습하는 개념으로 차근차근

 

  count() : 갯수를 새주는 함수

  ex) a = 'hobby'  /  a.count('b') 는 hobby에서 b가 몇개인지 세준다 그럼 출력값은?  =>  2

 

  find() : 위치 찾는 함수

  a = 'Python is the best choice' 라고 하고

  ex) a.find('b') 라고 하면 b가 처음으로 나온 위치를 알려준다 출력값  =>  14

  ex) a.find('k') 는 k 가 없어서 -1로 반환한다  =>  -1

 

  index() : 위치찾는 함수

  위랑 똑같다 귀찮으니 코드는 패스 대신 다른점 하나는 find()는 문자가 없으면 -1로 반환하지만 얘는 에러뜬다

 

  join() : 문자열 삽입 함수

  이친구는 직접 한번 보자

  ",".join('abcd') 이면   출력값은  =>  'a,b,c,d' 같이 각 문자 사이에 쉼표( , ) 를 삽입한다

  써놓고보니까 포문돌려서 append 한것도 같고? 암튼 알아두면 편리

  리스트로도 쓸 수 있다 ex) ",".join(['a','b','c','d','e')   출력값은   =>  a,b,c,d,e 로 하나로 합쳐진다

 

  upper(), lower() : 대문자로 바꾸기, 소문자로 바꾸기

  이건 뭐 따로 안배우긴 했는데 간단해서 좋다

  a = 'hi' 일때 ex) a.upper()   출력값은 =>  "HI" 로 대문자로 바꿔준다, 소문자는 굳이 쓰기 귀찮으니 패스

  안쪽에 이미 문자열이 대문자or소문자 이면 굳이 따로 변환시키진 않는다.

 

  lstrip() , rstrip(), strip() : 공백 지우는 함수

  left, right strip 이라고 생각하기 왼쪽 오른쪽 양쪽의 공백을 지워주는 역할을 한다.

 

  replace() : 문자열 바꾸기

  replace 말그대로 재배치다 replace( 1 , 2 )  [1]이라는 바꾸길 원하는 문자를 [2]라는 문자로 바꿔준다

 

  split() : 문자열 나누기

  은근 많이쓴다 문자열을 나눠주는거다

  a= "Life is too short" 라고 한다면 ex) a.split()  출력값은  =>  ['Life', 'is', 'too', 'short'] 다

  디폴트인 공백 기준으로 문자를 스플릿 해줫따!!

  지정 문자열로 쪼개는 방법도 있다 b = 'a:b:c:d' 라고 했을때 ex) b.split(':') 의 출력값은? => ['a','b','c','d'] 이다

  여기서 관전 포인트가 있는데 얘는 스플릿해서 리스트에 넣어준다는 점이다 그 부분 꼭 알고 넘어가자

 

 

 

 

- if문

  조건문이다. 어떤 조건이 만족하면 실행되는 아주아주아주아주아주많이쓰는 조건문이다.

  알고리즘의 기본을 생각해보면 y/n 이라는 선택지가 주어졌을때 얘를 통해서 넘기고 돌아가고 이해하면 된다.

 

  if a == 0 :   ==> 만약 a가 0이라면 이라고 조건을 준다 그 조건이 만족하면 아래 코드가 실행된다

  elif a == 1:  ==> 위의 코드에서 a가 0이아니엇으면 조건이 만족하지 않아 elif문이 실행된다

  else:  ==> 조건문이 만족하지 않아 이도저도 아니면 else 문을 실행 따로 조건 안 넣어줘도 된다.  

 

 

for문부턴 다음에

 

2021. 07. 01