01_파이썬 기초(1)

ryu·2023년 5월 4일

파이썬의 특징

특징

  • 무한 정수를 처리할 수 있음. 즉 메모리가 허용하는 한, 아무리 큰 크기의 정수라도 표현이 가능

    • 다른 언어의 경우 정수의 범위에 따라 다른 자료형을 지정해주어야 함
  • 문법구조가 쉬움

  • 다양하고 뛰어난 모듈이 있음


프로그램 실행 과정

컴파일러

  • 소스코드 -> 실행 가능한 파일로 컴파일

    • 컴파일: 코드를 컴퓨터가 이해할 수 있는 기계어로 바꾸는 작업. 일종의 번역
  • 컴파일된 코드를 기계에서 실행

  • 이때 컴파일하는 과정을 거치면 실행하기 위한 파일이 생성됨

인터프리터

  • 실행 파일을 만들지 않고 실행이 필요할 때 기계어로 변환함
  • 실행하기 위한 별도의 파일이 생성되지 않음
  • 필요할 때마다 소스파일을 실시간으로 번역해서 실행

컴파일러 vs 인터프리터

  • 컴파일언어는 소스 전체를 실행 파일로 만든 후 기계에서 실행
    • c/c++, java 등
    • 번역과 같음
  • 인터프리터 언어는 필요한 소스코드만 그때그때 실행
    • python, ruby 등
    • 동시통역

데이터와 메모리

데이터

  • 관찰이나 측정을 통해 수집된 데이터로 숫자, 문자, 음원, 영상, 이미지 등
  • 이러한 데이터를 수집하여 가공한 것이 정보

메모리

  • 데이터가 저장되는 공간

변수

변수

  • 데이터가 저장되어있는 메모리의 특정 공간
  • 변수를 선언하고 처음으로 값을 할당하는 것을 '초기화'한다고 함. 변수를 선언만 해놓고 나중에 값을 할당하도록 할 수 있는 언어도 있으나 파이썬의 경우 그렇게하면 오류가 발생하므로 선언과 동시에 초기화하도록 한다.

변수를 사용하는 이유

  • 데이터의 재사용
  • 프로그램을 효율적으로 관리 가능

변수명

  • 데이터가 저장되어있는 메모리 공간이 변수인데, 여기에는 주소가 있음. 하지만 주소값을 직접적으로 사용하는 것이 어렵기 때문에 여기에 이름을 붙인 것이 변수명

  • 변수명은 a, b, c, a1, a2 ... 와 같은 방식은 권장되지 않고 데이터의 의미를 쉽게 알 수 있도록 지정하는 것이 바람직

    • ex) 회원의 이름을 저장하는 변수 -> userName
  • 한글도 변수명에 사용할 수 있지만 영문 사용이 권장

  • 첫 글자는 소문자를 권장. 대문자도 사용이 가능하나 보통 클래스명의 첫 글자를 대문자로 사용하기 때문에 혼동이 올 수 있음

  • 카멜표기법 또는 스네이크 표기법 사용

    • 카멜표기법: 두 단어 이상으로 이루어진 변수명에서 두 번째 이후 단어의 첫 글자를 대문자로 하는 방법
      • userName, myHomeAddress
    • 스네이크 표기법: 두 단어 이상으로 이루어진 변수명에서 각 단어를 언더바(_)로 연결하는 방법
      • user_name, my_home_address
  • 숫자는 사용이 가능하나 변수명의 첫 번째에는 사용이 불가

  • 언더바를 제외한 특수문자 사용 불가

  • 예약어는 사용 불가

    • 예약어: 파이썬에서 특정 기능을 수행하도록 미리 예약되어 있는 단어

      False, None, True, __peg_parser__, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield
  • 공백문자 사용 불가

    • ex) (공백) a, a b
  • 파이썬의 내장함수 이름은 변수명으로 사용할 수는 있으나 해당 내장함수를 사용할 수 없어지게 되기 때문에 사용하지 않는 것이 좋음


자료형

  • 효율적인 메모리 사용을 위해서 데이터를 정수형, 실수형, 문자형, 논리형으로 구분한 것
  • 데이터 타입에 따라 메모리 크기가 결정됨

문자(열)형

  • 작은 따옴표(' ') 또는 큰 따옴표(" ")를 사용
  • 두개를 혼용할 수는 없음
    • ex) 'Hello World!"
  • 문자와 문자열을 구분하는 언어가 있으나 파이썬에서는 그냥 사용하면 됨

정수 vs 실수

  • 정수는 메모리가 허용되는 한 무한히 사용이 가능

  • 반면 실수는 대략 소수점 이하 17~18번째에서 데이터 손실 발생

    fNum = 0.12312312312123123123123123123123123123123
    print(fNum) #0.12312312312123123

숫자 vs 문자

  • 숫자 형태라도 따옴표로 묶여있다면 문자

논리형

  • 참(True)과 거짓(False)을 구분하기 위한 자료형

자료형 변환

  • 데이터 타입을 변환하는 것으로 파이썬에서 제공하는 함수를 이용하여 가능

문자형으로의 형변환

  • str() 함수를 이용

    var = 100
    print(type(var)) #<class 'int'>
    
    var = str(var)
    print(type(var)) #<class 'str'>

숫자형으로의 형변환

  • 정수의 경우 int() 함수를, 실수의 경우 float() 함수를 사용

  • 논리형 -> 숫자형

    • True: 1(정수), 1.0(실수)
    • False: 0(정수), 0.0(실수)
    var = False
    var = float(var)
    print(var) # 0.0
  • 실수를 정수로 바꾸면 소수 부분은 버리고 정수로 형변환 됨

    var = 3.7
    var = int(var)
    print(var) # 3
  • 정수 형태의 문자열을 실수로 형변환 하는 것은 가능하나, 실수 형태의 문자열을 정수로 형변환하는 것은 불가능

    #1. 정수 형태의 문자열 -> 실수
    var = '3'
    var = float(var)
    print(var) # 3.0
    
    #2. 실수 형태의 문자열 -> 정수
    var = '3.0'
    var = int(var)
    print(var) # ValueError: invalid literal for int() with base 10: '3.0'

논리형으로의 형변환

  • 문자열 -> 논리형

    • 빈문자('')가 아니라면 모두 True로 변환됨
    • 단, 빈문자('')와 공백문자(' ')를 혼동하지 말아야하며 공백문자의 경우 공백 데이터가 있는 것이고, 빈문자는 말 그대로 아무런 데이터가 없는 것
    • 또한 'False' 문자열도 논리형으로 변환하는 경우 True가 되는 것에 주의
  • 숫자형 -> 논리형

    • 0의 값을 가지는 경우는 False, 그 외에는 True로 변환
      • 0.0, -0.0, -0 모두 False
  • 논리형 역시 산술 연산이 가능하며, True는 1, False는 0으로 계산

    var1 = True
    var2 = False
    
    print(var1+var2)	# 1
    print(var1*2)			# 2
    print(var2+3)			# 3

데이터 입력

  • input() 함수를 통해 입력 받으며, 함수 내에 문자열 인자를 넣어줌으로써 입력 가이드 문구를 줄 수 있음

    userInputData = input('당신의 이름을 입력해주세요: ')
  • input() 함수를 통해 입력받은 데이터는 항상 문자열 자료형. 따라서 원래 의도한 자료형으로 사용하고 싶다면 형변환 후에 사용해주어야 함


데이터 출력

  • print() 함수를 이용한 출력

    • 인자로 출력할 내용을 줄 수 있고, 여러 데이터를 한 줄에 출력하고 싶다면 콤마(,)로 여러 데이터를 인자로 주면 됨

    • print()를 사용하면 자동으로 줄바꿈이 되는데 end 인자의 기본값이 개행문자(\n)로 되어있기 때문이고, 이를 적절히 바꾸면 줄바꿈 외에 같은 줄에 이어서 출력하기 등등이 가능

      print('안녕', end='')
      print('하세요')
      # 안녕하세요
  • 포맷 문자열을 이용한 데이터 출력

    userName = '홍길동'
    print(f'User name : {userName}')
    # User name : 홍길동
  • 특수문자

    • \t는 탭을, \n은 개행

    • 만약 위와 같은 기능으로 쓰고 싶은 게 아니라 \t 라는 문자열을 출력하고 싶다면 \ 앞에 \를 하나 더 붙여줌

      print('안녕\t하세요')	# 안녕	하세요
      print('안녕\\t하세요')	# 안녕\t하세요

format() 함수

  • 문자열 내에 어떤 값을 삽입하여 출력하기 위한 방법. 하지만 f-string을 활용한 방법이 훨씬 편하다고 생각하기 때문에 사용할 일이 있을지는 잘 모르겠다

기본 사용

  • 문자열 내에 중괄호({})를 넣어주고, 문자열 뒤에 format(값)을 넣어주면 됨

    print('User name: {}'.format(userName))
    print('User name: {}, User age: {}'.format(userName, userAge))
  • 하나의 값을 여러 군데 넣을 때는 위와 같이 해도 상관없지만, 인덱스를 사용하는 방법으로 더 편하게 출력할 수 있음

     print('이름은 {0}이고 나이는 {1} 살입니다. {0}라는 이름은 아버지께서 지어주셨어요'.format(userName, userAge))

형식문자

  • %s: 문자열, %d: 정수, %f: 실수

  • 문자열 내에서 값을 삽입할 위치에 위 형식문자를 넣고 문자열 뒤에 %와 함께 삽입할 값을 넣어줌. 값이 여러개일 때는 소괄호로 묶음

    print('User name: %s, User age: %d' % (userName, userAge))
  • 소수를 삽입할 때는 %와 f 사이에 .과 숫자를 지정함으로써 소수점 몇 번째 자리까지 표시할 것인지 정할 수 있음

    print('Pi : %.0f' % 3.141592)	# 3
    print('Pi : %.6f' % 3.141592)	# 3.141592

연산자

연산자의 종류

  • 산술 연산자: +, -, *, /, %, //, **
  • 할당 연산자: =. +=, -=, *=, /=, %=, //=
  • 비교 연산자: >, >=, <, <=, ==, !=
  • 논리 연산자: and, or, not

덧셈 연산자

  • 숫자끼리 가능: 정수 - 정수, 정수 - 실수, 실수 - 실수
  • 문자열끼리 가능: 더한 문자열이 하나의 문자열로 합쳐짐
  • 숫자 - 문자는 불가능

뺄셈 연산자

  • 숫자끼리 가능
  • 문자열끼리 불가능
  • 숫자 - 문자열도 불가능

0개의 댓글