파이썬 자료형, 변수, 입력과 출력, 연산자

somi·2023년 5월 8일
0

230508 알고리즘/자료구조 - 파이썬 강의 1차시

파이썬 기초 개념

  1. 파이썬 설치하기 https://www.python.org/downloads/
    • IDLE: 파이썬 콘솔(콘솔 창은 저장x. 간단하게 보기 좋다)
  2. 파이참 설치하기 https://www.jetbrains.com/ko-kr/pycharm/download/#section=mac
  3. 파이썬 공식 문서 (https://docs.python.org/ko/3/)
  4. Python Tutor (https://pythontutor.com/)

print("Hello World!")

파이썬: 매우 쉽고 간결하다는 장점

  • 주석은 # 을 이용하여 작성한다.
  • ctrl + / 단축키를 사용하면 한 줄을 주석으로 만들 수 있다.)

프로세스

  • 1) 입력
  • 2) 처리
    - 제공받은 자료 구조화: 어떻게 저장할 것인지
    - 처리 로직: 어떻게 쓸 것인지
  • 3) 출력

알고리즘 = 컴퓨터에게 복잡한 조건으로 계산을 시키는 것

파이썬 자료형

  • 왜 자료형이 나뉘어야 할까?
    • 다양한 정보를 컴퓨터에게 주고, 코드의 로직에 따라 계산시키기 위함.

문자열

  • 공백과 빈 문자열 주의 - 엄연한 문자열이다.
  • 따옴표 안의 따옴표를 표시할 경우 서로 다르게
  • 숫자 123과 '123'은 다르다.
참고)
'a' > 'c' # False
* 아스키 코드 때문
* sorting도 된다. ord('a') 함수 안에 넣으면 아스키 코드 값을 알려줌

Boolean

형변환

- 명시적 형변환
	- int(): 단, 정수로 변환될 수 있는 형식일 때만 가능하다.
    	- 실수형(float) => int: 버림일 때 사용 가능
	- float()
	- str()
- 강제 형변환 => True -> 1, False -> 0 으로 변환된다.	

할당 연산자

할당 연산자 = 를 통해 변수에 각기 다른 자료형을 담아 표현 가능
할당 연산자는 변수가 할당된 객체의 주솟값을 가리킨다!!

name = 'alex'     # 이름에는 문자열을,
age = 3           # 나이에는 숫자를,
license = True    # 운전면허 보유여부에는 진리값을 할당 가능
  • 할당 연산자 왜 쓰는가?
    : 메모리 안의 객체 주소값 때문
    • 메모리 안에, 주소값을 포인팅
    • 왼쪽의 값이 즉 오른쪽 값의 메모리 주소값을 가리킨다.
  • 변수를 사용하는 이유?
    : 개발자들에게 메모리에 직접 제어를 허용하지 않기 위해. 남의 컴퓨터 망가뜨리지 않기 위해
    • 돌리는 환경에 따라 다른 주솟값을 가지게 되므로 안전해진다.
id()  # 메모리 주소값
a = [1,2,3], b = [1,2,3]일 때
id(a) ,id(b) => 서로 다른 메모리 주소값이 나온다.
a == b #True
a is b #False

a = [1,2,3]
b= [1,2,3]
c = a			 # c도 a의 메모리 주소 할당
a[0] = 99
b[0]= 100

실제 자료구조들은 리스트, 딕셔너리, 튜플뿐만 아니라 그리고 여러 자료구조를 섞어 표현할 수 있음을 기억하자.

자주 사용하는 내장 함수와 메서드

: 배우는 이유? 데이터를 쉽게 조작하기 위해서!

.append(x)

  • 리스트의 맨 마지막에 새로운 원소 x를 삽입

.pop()

  • 리스트의 맨 마지막 원소를 삭제 후 반환

.pop(i)

  • 리스트의 i번째 원소를 삭제 후 반환
  • 맨 앞 원소 빼기 : .pop(0)

파이썬에서 리스트로 스택, 큐, 트리 표현이 가능하다.

스택

후입 선출 구조: 마지막에 들어온 것이 먼저 나간다.

: 리스트 신규 데이터의 삽입과 추출은 append(), pop()로 구현이 가능하다.
예) 크롬 뒤로가기 - 시스템 스택에서 pop

선입 선출 구조: 먼저 들어온 것이 먼저 나간다.

: 리스트 신규 데이터의 삽입과 추출은 append(), pop(0)로 구현이 가능하다.

  • 우선순위 큐: 높은 우선순위를 가지는 경우 먼저 처리한다.

파이썬 입출력

input(): 사용자의 입력을 받는다.

파이썬의 내장함수 input()을 사용하면 터미널에서 사용자 입력을 받을 수 있다.

파이썬: 인터프리터 언어 (Interpreter Language)

  • 한줄 한줄 읽는다.
  • 입력은 터미널에 줘야한다.
  • 터미널에 입력을 해야 코드라인에 들어감.
  • print는 코드라인에 있지만 터미널에 출력되는 것.

아무것도 출력하지 않고 한 줄만 띄우고 싶다면 print()라고만 작성

print(end=" ") : end 옵션을 지정할 수 있다. 디폴트는 \n라서 개행
print(a,b) : 여러개 프린트도 가능

식별자(Indetifiers : 변수명)와 리터럴(Literal: 데이터의 값)

할당 연산자의 왼/오른쪽이라고 생각하면 쉽다.

변수명(식별자) 작성 규칙
1) 알파벳, 언더바(_), 숫자로 구성되어야 한다.    # number, my_note, car1
2) 첫 글자에는 숫자가 올 수 없다.              # 1car는 불가능
3) 대소문자를 구별한다.                      # 변수 a와 변수 A는 서로 다른 변수
4) 띄어쓰기가 필요한 경우 언더바(_)로 구분한다.   
	# 식별자에는 공백이 있으면 안되므로 my_list 와 같은 식으로 공백을 표현
5) 예약어로 지을 수 없다.

참고) LEGB 규칙
파이썬에서 변수에 값을 바인딩하거나 변수의 값을 참조하는 경우 LEGB 규칙을 따른다.

L Local의 약자로 함수 안을 의미
E Enclosed function locals의 약자로 내부함수에서 자신의 외부 함수의 범위
G Global의 약자로 함수 바깥 즉, 모듈 범위
B Built-in의 약자로 open, range와 같은 파이썬 내장 함수들을 의미


파이썬은 재할당과 동시할당이 가능하다.

  • 재할당시 변수는 가장 마지막으로 할당한 값을 가지고 있다.
  • 동시할당의 경우 코드를 한줄로 적어도 된다.
	x,y = 10,20

swap 코드

swap 코드 또한 매우 간단하게 쓸 수 있다.

x = 3
y = 4
x, y = y, x
x # 4
y # 3

연산자

  • // : 몫
  • % : 나머지
  • ** : 제곱
print(a / b)   # 5 나누기 2 (항상 결과는 float 타입임을 주의하자!!!)

4 / 2  => 2.0 
******부동소수점 오차 때문에 나눗셈 연산에서 오류가 날 수 있다.
	부동소수점: 실수를 표현할 때 소수점의 위치를 고정하지 않는 것
    
=> 4 // 2  # 2
: 오류를 방지하려면 이렇게 사용해야 한다. 

복합 연산자

비교 연산자

결과값은 boolean

논리 연산자

  • 단축 평가(short-circuit evaluation)?

    계산을 진행하는 도중에 결과가 이미 확정된 경우, 나머지 계산 과정을 생략.
    첫 번째 값이 확실할 때, 두 번째 값은 확인 하지 않는다.
print(3 and 4) # 4
print(0 and 4) # 0
print(4 or 3) # 4
print(0 or 8) # 8

트리

간선 개수 = 노드 개수 -1

: n개의 노드를 가진 이진트리는 n-1개의 간선을 가진다.

왼쪽: 2n
오른쪽: 2n + 1, 자식 -> 부모로 갈 경우: 2로 나눈 몫

profile
📝 It's been waiting for you

0개의 댓글