Day 1 파이썬 프로그래밍 개요와 기본 문법

1. 프로그래밍의 개요

1) 프로그래밍과 코딩

프로그래밍이란 컴퓨터나 스마트폰과 같은 기기가 어떤 일을 하도록 명령을 내리는 작업이고 프로그래밍 언어란 이런 작업을 하기위한 언어이다. 프로그래밍 언어를 활용해 특정 목적의 프로그램을 만드는 것을 코딩(Coding)이라고 한다.

2) 프로그래밍 언어란?

컴퓨터에 명령을 내리려고 만든 언어이다. 컴퓨터를 처음 만들었을 때는 CPU에 전기 신호를 주기 위해 2인 숫자로만 이뤄진 명령어, 즉 기계어의 나열이었다. 이 기계어는 오류를 발견하고 수정하기 무척 어려웠다. 이런 어려움을 해결하고자 어셈블리어(Assembly language)가 만들어졌다. 다만 컴퓨터 하드웨어에 대한 지식이 없는 사람에게는 여전히 쓰기 어려웠다. 따라서 베이직, 포트란, C, C++, 자바, 루비. 루아, R, 파이썬 등등 고급어가 새로 만들어지며 어셈블이어는 저급어라고 불리기 시작했다. 보다 쓰기 편해졌지만 컴퓨터가 해석할 수 있는 기계어로 바꿔야 한다. 기계어로 번역하는 방식에 따라 컴파일언어와 인터프리터 언어로 구분된다.

3) Compiled Language와 Interpreted Language

A. Compiled Language

다수의 명령어로 이루어진 소스코드를 한 번에 기계어로 번역해서 실행 파일을 만들어 낸다. C, C#, Java 등이 있다.

B. Interpreted Language

소스코드 언어를 한 줄씩 기계어로 번역해서 실행 결과를 보여준다. 그래서 스크립트 언어라고도 한다. R, Python, Ruby, javascript 등이 있다. REPL 과정을 따라서 동작을 하게 됩니다.

4) CRUD(Create Read Update Delete)

그 언어를 쓸 수 있냐는 간단히 말해 게시판 하나를 만들 수 있는지에서 시작한다고 한다. 그렇게 시작하고 어떻게 요구에 따라 추리고 도출해내는 것이다.

5) 문자열을 처리하는 방법

왜 1바이트가 8비트일까? 키보드에 있는 문자를 숫자로 표현하려면 128개가 필요하고 음수와 양수 모두 표현하려면 256개가 필요하여 8비트가 된다.

A. 텍스트 데이터

문자로 구성되어 있다. 프로그램소스파일과 메모장에서 작성한 txt파일 등이 있다.


이런 식으로 오류가 생기면 인코딩 문제인지 알아본다.

B. 바이너리 데이터

모든 파일은 0과 1로 이루어져 있다. 이미지파일(.png), 데이터파일(.dat), 실행파일(.exe) 등이 있다. 이미지 파일을 메모장에서 열었을 때 아래와 같이 나온다.

2. 환경설정

1) Colaboratory_코랩 설치

A. 코랩 사용시 주의사항

1) 일정 시간(90분)동안 행위 미발생시 정지 또는 총 12시간 이후 자동으로 세션 종료 - 유튜브에서 긴 시간 동영상 실행해놓으며 작업하는 게 팁이다.
2) 되돌리기는 Ctrl + m + z 이다.

B. 일반 파이썬 IDE와의 차이점

1) 파일의 확장자가 .py가 아닌, .ipynb라는 확장자를 사용하고 두 파일은 호환되지 않는다. 동작 방식도 다르다.
2) 일반적인 파이썬 개발환경은 파일에 있는 파이썬 명령어를 한번에 실행하지만 주피터는 셀(블록) 단위로 실행한다. 하나의 파일에서 명령어를 독립된 셀에 구성하여 따로 따로 실행한다.

3. 기본 문법

1) 변수

string(문자/문자열), 정수(int), 실수(float), boolean(논리)

A. String, int, float 예제

animal = "고양이" #String
name = "겨울" #String
age = 4 #int
age_f = 4.5 #float
hobby = "낮잠" #String
print("우리집 " + animal + "의 이름은 " + name + "입니다.\n"\
+ name + "는 " + str(age) + "살이며 지금 6월이니 정확히 말하면, "\
+ str(age_f) + "살입니다. " + hobby + "을 아주 좋아합니다.")

#out
우리집 고양이의 이름은 겨울입니다.
겨울는 4살이며 지금 6월이니 정확히 말하면, 4.5살입니다. 낮잠을 아주 좋아합니다.

B. boolean 예제

print(age > 5) #False
print(age < 5) #True

2)연산자

A) 사칙연산

(+, -, /, *)
number = number * 3 와 number *= 3는 같다.

A_1) 과학적 표기법

  • 지수연산(**)
  • 몫연산 (//)
  • 나머지 연산 (%)
  • 10의 거듭제곱(e정수)
5e10
#output
5000000000.0 #5x10의 10승
1e-4
#output
0.0001

B. 비교연산

= 같다라는 뜻이 아니다. 프로그래밍 언어에서는 대입한다는 뜻이다.

  • == 같다(항등 연산자, 자료형 타입과 값을 함께 비교)
  • != 같지 않다.
  • , <, >=, <= 크고 작음

C. 대입연산

  • a = 3 a라는 변수명에 3을 넣겠다는 선언을 뜻한다.
  • += (a+=10 → a=a+10) 앞의 값에 뒤의 값을 더해서 대입한다는 뜻이다.
  • -= (a-=10 → a=a-10)
  • 몫 /= (a/=10 → a=a/10)
  • 나머지 %= (a%=10 → a=a%10) 알고리즘에서 짝수 혹은 홀수를 가릴 때 잘 사용한다.

D. 논리연산_and, or, not

  • 0이 아닌 비어있지 않은 모든 값은 True,
    빈문자, 빈객체, 0은 모두 False이다.
  • 연산 우선순위가 정해져있다. 우선순위 not> and >or
  • or은 순서대로 연산 중 True가 나오면 연산을 그만하고 결과를 출력한다.
    and는 False가 나오면 연산을 그만하고 출력한다. False가 끝까지 안 나온다면 True를 출력한다.
print(1 == 1 or 1 == 2 and 1 == 3) #True
print(1 == 1 and 1 == 2 or 1 == 3) #False
print('BB' == chr(66) * 2) #아스키코드 활용

E. 탈출문자

파이썬에서 이미 약속된 규칙문자와 충돌할 경우, 충돌에서 탈출하기위한 문자가 탈출문자다. \역슬래시를 이용한다.

a. 줄바꿈

print("백문이 불여일견\n백견이 불여일타") #줄바꿈 \n 역슬러시

b. 큰/작은따옴표

큰/작은 따옴표 쓰기 \"~\"

print("르누아르는 \"고통은 지나가고, 아름다움은 남는다\" 라고 하였다. \n그 말을 들은 나는 \'내게 아름다움이란 무엇일까?\' 라고 생각하였다")

c. 여러줄쓰기''' ~ '''

print("""백문이 불여일견
백견이 불여일타""") #줄바꿔 여러줄 쓰고 싶을떄 """"~"""

d. 역슬러시 쓰기 \

print("파이썬 파일의 위치는 C:\\Users\\max_s\\Desktop\\PYTHONWORKSPACE>이다")

혹은 슬러시 / 한 번 쓰기

print("파이썬 파일의 위치는 C:/Users/max_s/Desktop/PYTHONWORKSPACE>이다")

e. 맨 앞 어절 바꾸기(커서이동) \r

print("red apple\rpine")

f. 한 글자 지우기(백스페이스) \b

print("redd\bapple")

g. 4칸 혹은 2칸 띄우기(탭) \t

print("red\tapple")

F. 아스키코드

1963년 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계이다. 8비트 컴퓨터에서도 활용되어 오늘날 문자 인코딩의 근간을 이루게 된다.

F_1) 진수표현과 변환하기

진수는 2진법, 8진법, 10진법, 16진법이 대표적이다. 2진법은 0,1로 8진법은 0~7까지로, 10진법은 0~9로, 16진법은 0~9와 a,b,c,d,e,f로 표현한다.
변환방법을 보자.
1) 각진법에서 십진법 32로 변환하는 예
2) 십진법 32에서 각진법으로 변환하는 예

# 1) 십진법으로
0b0100000 #32
0o40  #32
0x20  #32
# 2) 각 진법으로 (문자열로 출력된다)
bin(32) #'0b100000'
oct(32) #'0o40'
hex(32) #'0x20'

G. 숫자 처리 함수

abs, pow, sqrt, max, min, round, floor, ceil

print(abs(-7)) #마이너스 없앰
print(pow(4, 3)) #4의 3승 
print((4 ** 3) == pow(4, 3)) #ture
print(sqrt(16)) #제곱근 #4
print(max(4, 12)) #최댓값
print(min(4, 12)) #최솟값
print(round(4.95)) #반올림 #5 
round(4.5764, 2) #소숫점 둘 째자리까지 반올림 #4.58
from math import * 
print(floor(4.89898)) #내림
print(ceil(5.11)) #올림

3) 자료형

데이터를 묶어서 처리할 때 편리하게 이용하기
list, tuple, diction

A) 리스트[a,b,c,d]

a) 리스트 다루기

지하철에 BTS 멤버들이 탄다.

subway1 = ["지민", "뷔", "정국", "진", "제이홉"] #인덱스 값 지민부터 0으로 시작해 제이홉이 4로 끝난다.
#뷔가 내리고 RM이 탔다.
subway1[1] = 'RM' #뷔의 인덱스 1에 'RM'을 넣는다.
subway2 = ['크리스 마틴', '가이 베리먼', '윌 챔피언', '조니 버클랜드', '필 하비'] #subway2에는 Coldplay 멤버가 탔다.
#콜드플레이 멤버들이 BTS멤버들이 탄 지하철로 모두 옮겨 탄다.
subway1 += subway2 #더하기
subway1
#지하철에 탄 인원이 3배로 늘어난다.
subway *= 3 #곱하기

b) 리스트 메소드: append, extend, insert, pop, count, sort, revers, clear

subway = ["지민", "뷔", "정국", "진", "제이홉"]
print(subway)
print(subway.index("뷔")) #위치(인덱스 값) 알기
#append와 extend 차이
subway.append("RM") #뒷 자리 추가
subway.extend(["뷔", "정국", "진"]) #한 번에 여러 명 추가
subway.insert(3, "슈가") #(index, "value")
print(subway)


print(subway.count("뷔")) #몇 번 나오는지

subway.sort() #정렬
print(subway)
subway.reverse() #거꾸로 정렬
print(subway)

#삭제 pop, del, remove, clear
subway.pop() #뒤에서 부터 빼기
del subway[1]
subway.remove("진")
print(subway) 
subway.clear() #리스트 비우기
print(subway)

B) 튜플(a,b,c,d)

리스트와 유사하게 데이터 여러 개를 하나로 묶는데 유용하지만 한 번 생성하면 그 이휴에는 변경할 수 없다는 점이 리스트와 차이점이다.

a) 요소 파악하기

  • in, not in
tup1 = ("뷔", "정국", "지민", "제이홉")
tup1 = "뷔", "정국", "지민", "제이홉" #소괄호를 쓰지 않아도 튜플로 생성된다. 
print("지민" in tup1) #True
print("정국" not in tup1) #False

C)세트{a, b, c, d}

b. 슬라이스

  • 시작점, 끝점+1, step
  • 뒤에서부터 [-1]
  • 첫번재 원소 인덱스가 0이고, 첫째와 마지막을 생략할 수 있다.
tup1 = ("지민", "뷔", "정국", "진", "제이홉", "RM")
print(tup1 [1: 6 : 2]) #두 번째부터 다섯 번째까지 2 steps
print(tup1 [ : : 2]) #생략 가능
print(tu1p[::-1])  #reverse 연산 

★ 범위를 벗어나지 않게 조심해야한다_Error: out of range

C) 레인지

  • 범위 내에서 수열을 생성하는 시퀀스 타입이다.
  • 정수만 가능하다.
  • 반복문이랑 가장 많이 쓰이는 명령어 중 하나다.
  • range(시작점, 끝점+1, step)
  • 시작점과 step은 생략 가능하다

    #따로 따로 출력하기
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]_
    [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

  print(list(range(0, 21, 2)))
  print(list(range(1, 20, 2)))

f. 세트, g. 딕셔너리

4) 변수 명명법

  • 숫자를 변수명의 앞에는 쓸 수 없다.
  • 시작은 소문자로 한다.

A. 네이밍 컨벤션* (Naming Convention)

통일성을 갖기 위해서는 사람들이 공유하는 코딩 스타일 가이드를 가지고 있는 것이 좋다.

a. snake_case

  • 모든 공백을 "_"로 바꾸고 모든 단어는 소문자다.
    파이썬에서는 함수, 변수 등을 명명할 때 사용한다.
    ex) this_is_snake_case

b. PascalCase

  • 모든 단어가 대문자로 시작한다.
    UpperCamelCase, CapWords라고도 불린다.
    파이썬에서는 클래스를 명명할 때 사용한다.
    ex) ThisIsPascalCase

c. camelCase

  • 처음은 소문자로 시작하고 이후 모든 단어의 첫 글자는 대문자로 한다.
    파이썬에서는 거의 사용하지 않는다. (java 등에서 사용)
    ex) thisCamelCase

d. kebab-case

e. 그 외(airbnb)

  • 회사마다 다른 경우도 있지만 airbnb 컨벤션을 주로 쓴다.
    파이썬 가이드

4. 자격증과 공모전

profile
Learning&Running

0개의 댓글