본문 바로가기
파이썬/기초

[파이썬] 변수 / 자료형 / 연산자 / 조건문_반복문

by nemonemonemo 2025. 8. 1.

파이썬 Essential

  • 변수
  • 제어문/반복문
    • 데이터만 한다면 while문 쓸일 없긴함
    • 하지만 코테 하려면 while도 알아야해
  • 함수/클래스

 

1. 변수

  • 변수에 값 할당 with 연산자
    • =
      • 연산자
      • 값을 할당/연결을 할 때 사용하는 연산자
      • 왼쪽 : 주로 변수명
      • 오른쪽 : 숫자, 여러개, 대상…등
    • n += 1
      • 이런 걸 10만번 한다면? ⇒ 속도 이슈 발생
      • 그러므로 최대한 이렇게 써라
      • +=, -=, *=, /= etc..
  • 멀티할당
    • 데이터 분석에서는 쓸 일이 없지만
    • 코테에서 아주 유용하게 쓰임
      • 코드가 아주 간결해지고 가독성 좋아짐
      • 기능적으로 빠르진 않음
    • 파이썬의 주된 특징 중 하나
    • a,b의 연결을 swap을 하기 위해서 파이썬에서는 → 멀티할당! 
    • a, b = b, a print(a, b) ​

1-1. 자료형

 

파이썬의 자료형 총 정리

  • 내가 1개 값을 대상
    • 값의 종류
      • 숫자(정수, 실수, 복소수 …)
      • 문자 1개 (영어, 한글, 특수문자…)
      • 논리값 (T/F, 1/0)
  • 내가 여러개의 값을 대상 (여러개를 다루는 친구들은 다 반복문이 가능하다)
    • 값들을 나열
      • 리스트
        • [값, 값, 값, ….]
        • 파이썬에서 가장 대표적인 여러개를 다루는 자료형 (그래서 많이 쓰임)
        • 수정이 가능( 추가, 제거, 변형…)
      • 튜플
        • (값, 값, 값, …..)
        • 수정 불가능
        • 아이스브레이킹 질문으로 리스트 튜플 차이가 뭐에요? 같은 거 많이 함
      • set (코테용)
        • {값, 값, 값, …}
        • 수학적인 집합처럼 기능
          • → 중복된 값을 1개로 처리
          • → (자료형만 변경하면) 유니크한 값들을 필터링!
    • 딕셔너리
      • {key : value, key : value, key : value, ….}
      • 미니 데베의 역할
      • 값을 접근하는 데 있어서 키 값으로 바로 접근 → hash 알고리즘으로 바로 빠르게 접근 ⇒ 그래서 코테에서 유용함 (값이 여러개일 때, 빠르게 접근할 수 있는 방법 중 하나)
      • 값이 많을 때 빠른 시간내에 찾을 수 있는 방법 중 하나 (단, 키 값은 알아야함)
    • 문자열
      • “hello”

예시

  • 예) 우리반 학생 3명 a, b, c 친구들이 시험봄. 80, 70, 95점을 받았음. 3명의 총점은?
    a = 80
    b = 70
    c = 95
    #-> 문제 주어진 조건에 대한 표현(세팅)
    # 할 일: 총점 구하자 -> 세팅과 할일을 풀어(알고리즘+잔기술+유형)나가야
    
    total = a + b + c
    print(total)
    ​
     
  • +우리 반 학생이 3명이 아니라 100이라고 한다면...?
    std_1 = 90
    std_2 = 70
    std_3 = 95
    ...
    std_100 = 99
    # 장점 : 누가 몇 점인지 궁금할 때 바로 체크 가능
    # 단점 : 귀찮고 변수 너무 많아
    ​
    #알고자 하는 것 : 그냥 반 전체의 전체 평균/총점/최고점
    #내가 필요한 것: 그냥 점수들
    scores = [90, 70, 95, ...]
    #장점: 여러개의 불필요한 변수들 제거하고 하나로 대표화 가능
    #단점: 누가 몇 점인지 꼬일 수 있음
    ​
    #알고자 하는 것: 전체 반의 평균도 알고싶고, 
    #               누가 우리반의 1등인지 점수와이름도 알고 싶다.
    #조건: 우리반에 동명이인은 없음
    scores = {"A" : 90, "B" : 70, "C" : 95, ...}
    ​
     

리스트

  • 기본구조 : [값, 값, 값, …]
  • 기본기능
    • 값을 추가 (append, insert)
      • append: 값을 맨 뒤에 추가
      • insert: 중간에 좀 끼어들어갈게요 (어디에, 무엇을)
        a_list.append(50)
        a_list
        ###중요한 점: 재할당을 하지 않았음에도 갱신이 됨
        
        a_list = a_list.append(50) #이렇게 할 수는 있지만 비추
        ​
    • 값을 제거 (pop, remove)
      • pop: 위치 중김으로 제거 ()기본, 맨뒤
      • remove: 값을 중심으로 제거
        • 중복된 값이 여러개 있다면.. → 맨 앞에 1개만 제거
        • 코테할 때 중복된 값이있는지 없는지에 따라서 remove 써도 되는지 아닌지 결정됨
    • 여러개의 값을 모아둔다고 했음
      • 파이썬 대충.. 파이썬틱하게.. 두리뭉실
      • 여러개 값에 대한 아주 심한 제약을 하지 않음 (장단점이 있지)
        a_list = [10, 20, 30, 40, "hello", [1,2,3]]
        a_list
        ​
    • 여러개의 값들 나열: 값을 어떻게 접근할 것인가
      • 한개의 값을 가지고 접근할지 vs 여러개 값을 규칙적으로 접근할지
        → 인덱스 자리 : 정수 인덱스 vs 슬라이싱
        • 정수 인덱스
          (몇번째에 나오세요?(위치 정보))
          • 순방향: 0, 양의 정수
          • 역방향: 음의정수 -1, -2 (맨 뒤에서 첫번째, 뒤에서 두번째)
        • 슬라이싱
          ( 여러개 값을 접근 + 규칙)
          • 정수 인덱스 자리에 사용을 함
          • 시작점 위치 : 끝점위치(빠짐) : 간격
          • ‘여러개 값’ & ’규칙’ (규칙이 없으면 슬라이싱 못 써)
          • ----------------------------------------------------------------  
          •  + 참고) 슬라이싱 활용해서 자기 자신 표현
            a_list[::]
            a_list[:]
            ​
          • + 참고) 순서를 뒤짚어서 , 맨뒤를 맨 앞으로… 순서를 역순
            a_list[::-1] #원본 회손X
            
            a_list.reverse() #원본에서 직접 바뀜
            ​
          • + 참고) 내가 접근하려는 것이 여러개인데, 규칙이 없다면?
            a_list[[1, 3, 4]]

 

튜플

  • 리스트와 유사한
  • 조작이 불가능 (추가x, 제거x)
  • 조작 안 하고 있는 값들에 대한 접근은 리스트와 동일

튜플은 append같은 거 없어

 

  • 튜플은 append같은 거 없어
  • 추가하려면?
    t = list(a_tuple) #자료형 바꾸고
    
    t.append(1000) #어펜드 해라
    

 

  • ⇒ 자료형에 대한 특징들을 정확하게 인지하고 있자
  • ⇒ 필요에 따라서 자료형을 와리가리 할 수 있다.
  • ⇒ 유연한 사고를 하면 좋다

 

값의 종류: 문자/문자열

  • 1개 문자
  • 여러개 문자열
  • 파이썬의 표현 양식 : ‘ ‘, “ “, ‘’’’’’’, “””””””
  • 왜 여러개의 양식을 만들었을까?
    • 문장부호가 파이썬의 문자열 특수문자라서
      • “집에가”라고 말했다.
        '“집에가”라고 말했다. '
        
        '''“집에가”라고 말했다. '''
        
        """“집에가”라고 말했다. """
        ​

 

  • 참고) 특수문자 : \
    • 파이썬의 기능적인 것이 아니라 특수문자로 인식해줘

  • 나중에 문자열을 좀 더 정확하고 복잡한 규칙을 풀어내겠다면?
    • 정규식 사용
    • 자연어 처리/ 언어 모델쪽 : 문자열 기반으로 규칙을 하는 것 : 지피티가 잘해 요샌’
    • → 코테에서 종종 나올 수있음 (뒤에 기출에서 보면서)
      • 지원 회사에서 과거 기출에 정규식이 있었다면? → 공부해라
      • ‘’ 없었다면? → 우선순위 뒤로
    • → 데이터 수집을 할 때 사용할 수 있음
  • 참고) 파이썬의 대충 두리뭉실을 이해할 것
    • +같은 보편적인 연산자가 대상에 따라서 다르게 동작함
    • 내가 연산자를 사용하려고 하는 대상이 무엇인지 꼭 파악하자 

 

딕셔너리
(여러개의값인데 약간 다른 스타일)

  • 파이썬으로 코테 : 유용한 자료형
  • 데이터분석: 가끔 1~2번 정도 씀
  • 기본 틀: 여러개 값을 모아둔다
    • {키:값} 쌍 중심으로 모아두자
    • {키:값, 키:값, .....}
  • 미니데이터베이스 : 속도 이슈에서 편함

 

  • 딕셔너리의 정보구성 : 키/값
    • 키 값들만 보여주세요 → .keys()
    • 값들만 보여주세요 → .values()
  • dict 자료형 핵심 : key → 값을 접근할 수 있는 유일한 경로

 

 + set

  • 자기가 알아서 중복된 값들을 처리함
  • (숫자만 있다면) 오름차순 정렬됨

 


1-2 . 연산자

산술연산자

 

 

나눗셈 관련 산술연산자

  • 1] 그냥 계산 → 적당한 범위 내에서 주구장창
  • 2] 몫만 계산
  • 3] 나머지만 계산
    • 코테에서는 잘 사용해야하는 부분 (정확하게 모든 것을 다 처리해야해서)
    • 데이터 수집/처리 할 때도 중요한 역할 ⇒ 규칙화!!!
    • ex) 987건의 데이터를 수집하고자함
      • 게시판의 1페이지: 100건씩만 보여준다
      • 몇 번 페이지 넘기는 버튼을 클릭해야할까?
        • 1~100, 101~200, 201~300, …
        • 600이면 → 600//100
        • 697이면 → 697//100 + 1
        • ⇒ 100으로 나눠 떨어지냐 아니냐
      • 파이썬에서 공식적으로 만든 함수 divmod()
        • 입력 : 무엇을 무엇으로 나눌지에 대한 정보 (기준수, 나눌수)
        • 기능: 나눗셈을 해서 몫, 나머지 토스
        • 출력: 입력에 대한 몫 나머지
          divmod(5,3) #(1,2)
          
          divmod(5,3)[0] #정수인덱스!!! : 정수(음의정수, 0, 양의정수)
          # 양의 정수 : 순방향
          # 음의 정수 : 역방향
          # 이래서 파이썬에서 기준 숫자가 0
          
          divmod(5,3)[1]
          
          divmod(5,3)[-1] #뒤에서 첫번째~
          ​
          # 몫도 필요하고, 나머지도 필요 => 멀티할당
          q, m = divmod(5,3) #(1,2)
          print(q, m) # 1 2
          
          q = divmod(5,3) #(1,2)
          print(q) # (1,2)
          ​

연산자: 비교 연산자, 논리연산자 등


2. 조건문/ 반복문

조건문 _ if문 (프로그램 뼈대)

  • 개념적인 부분
    • 수학적인 분할의 개념으로 접근
    • 영역이 겹치면 안 된다 → 부분을 다 모으면 전체여야함
    • 조건에 대한 부분을 명료하게 작성해야함
  • ex) 양수인지 판단하세요
    • 양수인지 0, 음수인지 나누면 됨
      a = -10
      
      if a > 0:
      	#조건을 만족할 때 tab 들여써서 할 일 작성
      	print("양수입니다.")
      else:
      	print("0 또는 음수입니다.")
      ​
    • 양수 / 0 / 음수 : 3가지 경우로 나눠서 판정하고 싶다
    • 필수는 아닌데 else로 마무리 하고 싶으면 쓰던지…

반복문 _ for

  • 여러개의 값을 롤링해주는 역할
  • 반복됨
  • 고정된 부분 가변적으로 바꿔야지 하는 부분 → 규칙화함
  • for i in (여기)
    • 여기는 리스트든 튜플이든 상관없어 → 여러개이기만 하면 됨
    • 문자 숫자 막 섞여있어도 됨
    • 딕셔너리는 어떻게? (중요*****)
      • 비슷하게 돌 것 같은데 정말 똑같을까?
        for i in a_dict:
        	print(i) #키값만 출력 a, b, c
        
        for i in a_dict.keys():
        	print(a_dict[i]) #밸류값 출력
        	
        for i in a_dict.values():
        	print(i) #밸류값 출력
            
            
        #########에러는 안 나는데 키값을 중심으로 돈다
         
      • dict (키, 밸류 같이 돌리면 안 돼?)
        • .items()
          #위의 코드를 활용해서 키 값만 출력하려면
          for i in a_dict.items():
          	print(i[0])
          	
          #위의 코드를 활용해서 값만 출력하려면
          for i in a_dict.items():
          	print(i[0])
          	
          #위의 코드를 활용해서 키 값과 밸류 값을 1줄 출력하려면
          for i in a_dict.items():
          	print("key:",i[0], "value:", i[1])
          	
          #파이썬의 멀티할당을 도입하면
          for k,v  in a_dict.items():
              print("Key:",k,"values:" ,v)
          ​
      • +참고) 리스트에서도 정수인덱스와 값 한 번에 불러오려면 어떻게?
        • enumerate() 
          enumerate(a_list)
          # [ (0,"a"), (1,"b"),(2,"c"),,,,,,(8,30)]
          
          for i in enumerate(a_list):
              print(i)
              
          for i in enumerate(a_list):
              print(i[0], i[1])
              
          for i, v in enumerate(a_list):
              print(i, v)
          ​

 

  • 이러한 부분들에 대해서 정확하게 알고 사용할 수 있어야함
  • 한가지 방법이 아니라 여러가지에 대해서 자유럽게 쓸 수 있거나
  • 남이 작성한 코드를 이해하는데 문제가 없어야함

 

 

'파이썬 > 기초' 카테고리의 다른 글

[파이썬] 반복문과 제어문/ 함수  (3) 2025.08.04