티스토리 뷰

AI/Python

[Python] 기초 문법

brave_sol 2024. 6. 1. 16:48

[1] 변수(Variable)

- 데이터(값)을 저장하기 위한 메모리 공간의 프로그래밍상 이름

- 변수는 메모리 주소를 가지고 있고, 은 메모리 주소에 할당됨
- 선언 되는 순간 메모리 특정 영역에 물리적인 공간이 할당됨

- 예) a=8 ; a라는 이름을 가진 메모리 주소에 8을 저장하라

 

(1) 폰 노이만 아키텍처

- 사용자가 컴퓨터에 값을 입력하거나 프로그램을 실행할 경우 그 정보를 먼저 메모리에 저장시키고, CPU가 순차적으로 그 정보를 해석하고 계산하여 사용자에게 결과값을 전달

 

(2) 변수 이름 규칙

- 알파벳, 숫자, 언더스코어(_)로 선언 가능

- 변수명은 의미 있는 단어로 표기하는 것이 좋다

- 변수명은 대소문자가 구분된다

- 특별한 의미가 있는 예약어는 쓰지 않는다(예. for, if, else 등)

 

[2] Basic Operation (간단한 연산)

- 간단한 사칙연산과 문자열 처리 등의 기초적인 연산

 

(1) 기본 자료형 (Primitive data type)

- data type : 파이썬이 처리할 수 있는 데이터 유형

- Dynamic Typing : 코드 실행시점에 데이터의 Type을 결정하는 방법(인터프리터가 알아서 해줌)

유형 설명 예시 선언형태
수치자료형 정수형 Integer 양/음의 정수 1,-9 data = 1
실수형 float 소수점이 포함된 실수 10.2,-9.3,0 data = 9.0
문자형 string 따옴표('/")애들어가 있는 문자형 abc, a20abc data = 'abc'
논리/불린 자료형 boolean 참 또는 거짓 True, False data = True

* 데이터의 유형에 따라 공간의 크기가 달라짐

 

(2) 연산자(+,-,*,/,%,**)와 피연산자(숫자)

- 문자열+문자열도 가능 a+b = ab

- 문자열+숫자열은 안됨

- 증가연산(+=, -=), 파이썬은 ++안됨

연산자 반환 예시
// print(7/5) # 1.4
print(7//5) # 1
print(7%5) # 2
print(divmod(7,5)) # (1,2) 튜플형식
% 나머지
divmod() (몫, 나머지)

 

(3) 데이터 형변환

- float(), int()*정수형으로 변환시 소수점 이하는 버림

예) int(10.7)의 값은 10

 

* 참고 : 컴퓨터에서 이진수를 쓰는 이유?

컴퓨터는 실리콘이라는 재료로 만든 반도체로 구성됨. 반도체는 특정 자극을 줬을 때 전기를 통할 수 있게 하는 물질

도체와 부도체에 반해 반도체는 전류의 흐름의 제어가 가능

전류가 흐를때1, 흐르지 않을때 0으로만 숫자를 표현할 수 있음

- 이진수 한자리를 bit라 칭하고 8개의 bit는 1byte

 

[3] list 또는 Array

- 시퀀스 자료형(여러 데이터들의 집합)

- int, float 같은 데이터 타입 포함

 

(1) 인덱싱 indexing: list[i]

- list에 있는 값들은 주소(offset, [0],[1],,,,)를 가짐 → 주소를 사용해 할당된 값을 호출

- len(list) 리스트의 길이 반환

 

(2) 슬라이싱 slicing : list[시작:끝:step]

- list의 값들을 잘라서 쓰는 것

- list의 주소 값을 기반으로 부분 값을 반환

예. arr[1:9:3]

 

(3) 리스트 연산 : 합집합

예. arr1= ['a','b','c'], arr2=['d','e','f'] 일떄 a+b → [ 'a','b','c','d','e','f' ] 

* 특정 값 확인 'a' in arr1 → True

 

(4) 추가 삭제

- list.append() :리스트에 새로운 값 추가, 리스트 변경

- list.extend() :  새로운 리스트 반환, 원래 리스트에 변화 X

- list.insert(인덱스번호, 추가할값) : n번째 주소에 x추가

- list.remove() : 리스트에 해당 값 삭제, 리스트 변경

- del list[인덱스번호] : 해당 인덱스의 값 삭제

 

(5) 메모리 저장 방식

- 파이썬 리스트만의 특징: 다양한 Daya Type이 하나의 list에 들어감(메모리 주소를 참조)

- a= [1,2,3,4,5], b= [4,5,6,7,8] 일때, b는 a의 주소값을 가리킴

- a의 주소값이 아닌 값을 복사 하고 싶을 경우 b=a[:]

 

(6) 패킹와 언패킹

- 패킹 : 한 변수에 여러 개의 데이터를 넣는 것

t = [1,2,3]

- 언패킹 : 한 변수의 데이터를 각각의 변수로 반환

a,b,c = t → a=1,b =2,c=3

 

(7) 이차원 리스트

- 리스트 안에 리스트를 만들어서 행렬(Matrix) 생성

- 이차원 리스트를 복사하는 방법?

import copy

copy.deepcopy(복사하고 싶은 이차원 배열)

 

[4] 함수와 콘솔 Function and Console I/O

(1) 함수

- 어떤 일을 수행하는 코드의 덩어리, 반복적인 수행을 1회만 작성 후 호출, 코드를 논리적인 단위로 분리

* 캡슐화 : 인터페이스만 알면 타인의 코드 사용

def 함수명(파라미터 들):

    수행문

    return 반환값

- 실행순서 : def 부분을 메모리에 올려놓음(상단에 적는게 좋음) →  메인 프로그램 수행 → 함수 호출 →  함수 수행 →  메인 프로그램 수행 

① 파라미터 : 함수의 입력 값 인터페이스 ex. f(x)의 x

② argument : 실제 Parameter에 대입된 값 ex.f(2) 의 2

* parameter 유무, 반환 값(return value) 유무에 따라 함수의 형태가 다름

예. def f(x) :

         print(x+10)

c = f(10)

print(c) # None → f(x)에 반환값이 지정되어있지 않기 때문! 

* list.sorted()는 return 값이 있어서 원래 리스트는 변경X, list.sort()는 기존 리스트 변경

※ 출처 : 네이버 부스트코스 - 인공지능 기초 다지기

 

(2) 콘솔 in/out

- 어떻게 프로그램과 데이터를 주고 받을 것인가?

input("입력받을때 질문하고 싶으면 여기씀") : 콘솔창에서 문자열을 입력 받아 반환하는 함수

=> *숫자도 string으로 들어옴

② print() : 출력 

* 출력형식

구분 사용법 예시
%-format '%data type' % variable print("I eat %d apples" % 3) → I eat 3 apples
print('%d%d' % (1,2)) →12
format함수
* type을 지정해주지 않아도 되서 편리
'{}'.format( variable ) print('I eat {} apples'.format(3))  I eat 3 apples
print('{1}{0}'.format('a','b')) →ba
fstring
* 왼쪽 정렬이 기본
f"내용{ variable }" name="Ho"
print(f"Hello {name}") → Hello Ho

* %-format 종류

type 설명 예시
%s 문자열 string print("%5.1f" % 1.54) → "  1.5" 공백, 점 포함 5칸. 반올림
print("%5.1f" % 1.55) → "  1.6" 공백, 점 포함 5칸. 반올림
print("%5.1f" % 1.56) → "  1.6" 공백, 점 포함 5칸. 반올림

① Padding :여유 공간을 지정하여 글자배열+소수점자릿수 맞추는 것
print("상품 : {0}, 가격 {1}".format("사과", 5.243))
→ 상품 : 사과, 가격 5.243
print("상품 : {0:10s}, 가격 {1:10.1f}".format("사과", 5.243))
→ 상품 : 사과        , 가격        5.2
print("상품 : {0:>10s}, 가격 {1:<10.1f}".format("사과", 5.243))
>는 오른쪽 정렬, <는 왼쪽정렬
→ 상품 :         사과, 가격 5.2

② naming: 해당 표시할 내용을 변수로 표시하여 입력
print("상품 : %(name)10s, 가격 %(price)10.5f" % { "name" : "사과", "price" : 5.243})
print("상품 : {name:>10s}, 가격 {price:10.5f}".format(name = "사과", price = 5.243))
→ 상품 :         사과, 가격    5.24300

name="Ho"
print(f"Hello {name:20}")      Hello Ho (왼쪽 정렬이 기본)
print(f"Hello {name:>20}")    Hello                   Ho (오른쪽 정렬)
print(f"Hello {name:*<20}")  Hello Ho****************** (빈칸은*로)
print(f"Hello {name:*>20}")  Hello ******************Ho
print(f"Hello {name:^20}")     Hello          Ho           (가운데 정렬)
%c 문자 1개 character
%d 정수 integer
%f 부동소수 floating-point
%o 8진수
%x 16진수
%% literal % (문자 % 자체)

 

※ 출처 : 네이버 부스트코스 - 인공지능 기초 다지기(https://www.boostcourse.org/ai100)

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함