파이썬 입문기 - 기초

김젼이 ·2022년 10월 14일
0

Python

목록 보기
1/1

1. print() 출력과 문자열

✅ end 키워드 이해하기
print 뒤에 end를 붙이면 자동으로 발생하는 줄바꿈을 없앨 수 있다.
사실, end 키워드를 사용한다고 줄바꿈이 없어지는 것이 아니다.
end 키워드를 사용하지 않을때는 print 문 끝에 자동으로 \n(줄바꿈)이 삽입된다.


end 키워드는 자동으로 추가되는 \n 대신 내가 넣는 문자열을 끝에 사용하겠다는 의미가 된다.

결과

2. 자료형과 변수

1. 숫자형

✔️ 정수형 : int(Integer type) / 소수점이 없고 사람의 수를 세거나 카드 개수를 세는 등의 계산에 사용
✔️ 실수형 : float(Floating type) / 소수점이 포함된 실수. 분수나 정확한 측정값에 이용되고 평균을 구할 때 많이 쓰임


type(___)을 print하면 일반적인 풀력문과 달리 <class 'int'>, <class'float'> 이렇게 괄호 안의 자료형이 출력된다.


print안에 계산식을 넣어도 결과가 출력되는 이유는 문자열이 아니라 숫자형이기 때문이다.
하지만 따옴표로 감싸게 된다면 문자열로 출력되기 때문에 그대로 출력이된다.
❓문자열에 type을 넣는다면?

0.2+1.8은 2.0이기 때문에 float가
"0.2+1.8"은 문자열로 출력되기 때문에 str이 출력된다.

2. 불 자료형

bool은 boolean의 줄임말로 참(True), 거짓(False)를 나타내는 자료형이다.
(*파이썬에서는 True, False 모두 맨 앞글자가 대문자여야한다!)
조건문에서 많이 사용되니 기억하기~!


3. 변수

사람들이 무언가를 기억할 때 외에 기억을 저장하는 것 처럼,
컴퓨터 안에 공간을 만들어 원하는 데이터를 저장 할 수 있다.
컴퓨터는 이 공간에 이름을 정하고, 데이터를 매번 바꿔가며 저장 할 수 있는데 이 공간의 이름을 변수라고 부른다.
파이썬은 =부호를 이용해 변수를 만들고 그 안에 데이터를 저장한다.


변수(Variable)는 말 그대로, 변하는 값을 의미하며, 한번 선언한다고 끝이 나는게 아닌 언제든지 데이터를 변경 할 수 있다.

4. 숫자형을 저장하는 변수

파이썬의 변수에는 모든 자료형을 저장 할 수 있다.

5. 문자열을 다루는 방법 - 인덱싱

문자열 인덱싱을 이용하면 문자열에서 원하는 부분만 골라서 가져 올 수 있다.
인덱싱(Indexing)무언가를 가리킨다는 의미로, 문자열의 글자에 번호를 지정하고 가리키는 것을 문자열 인덱싱이라고 한다.
인덱스 번호(위치)의 시작은 1이 아니라 0에서부터 시작된다.
또한 띄어쓰기랑 !와 같은 특수문자도 마찬가지로 한 공간을 차지하고 번호로 지정이된다.



✅ 정리
1) 인덱싱을 사용할 땐 대괄호를 사용하고 그 안에 인덱스 번호를 넣는다.
2) 변수[n] : 변수에 저장된 문자열의 n번쨰 자리수(번호)
3) 문자열[인덱스번호]의 형식으로 문자열 인덱싱
파=>[0], 이=>[1], 썬=>[2] / 파=>[-12], 이=>[-11], 썬=>[-10]
4) 음수 인덱싱은 뒤에서 부터 읽을 수 있게 한다.

6. 슬라이싱

인덱싱으로 문자열 중 하나를 골라 가져왔다면,
슬라이싱문자열을 잘라서 가져오는 방법이다.
슬라이싱은 콜론(:)을 사용해서 수행 할 수 있다.

✔️ 문자열[시작:끝] => 시작번호~끝번호-1
✔️ 슬라이싱의 끝 번호를 쓰지 않으면 => 시작번호~문자열의 마지막까지 슬라이싱
✔️ 슬라이싱의 시작 번호를 쓰지 않으면 => 문자열의 첫글자부터 끝번호 -1까지 슬라이싱

3. 산술연산자

1) 연산자

연산: 프로그램에서 수나 식을 계산해서 결과를 도출하는 것
연산자 : 계산할 때 사용되는 기호(+,-등)

2) 파이썬으로 사칙연산하기

(1) 파이썬의 나눗셈

  • /연산자 : 나눗셈(division)
  • //연산자 : 버림 나눗셈(floor division)
  • % 연산자 : 모듈로 연산자(modulo)


(2) 파이썬의 거듭제곱

(3) 복합 대입 연산자

대입연산자는 변수에 값을 넣어줄 때 사용했던 등호(=)를 의미한다.
복합 대입 연산자란 대입연산자와 산술연산자를 합친 것을 말한다.

  • += 기존 변수에 값을 더한 후 대입
  • -= 기존 변수에 값을 뺀 후 대입
  • *= 기존 변수에 값을 곱한 후 대입
  • /= 기존 변수에 값을 나눈 후 대입

(4) 산술연산자 활용

✅ 홀수 판정기
홀수는 2로 나누면 나머지가 1이라는 공통된 특징이 있다.
홀수 짝수를 구할때 나머지를 구하는 연산자를 이용한다.

응용
물건 가격이 3420원이라고 가정했을때 1000원 지폐, 100원 동전, 10원 동전은 각각 몇개가 필요한지 출력하고, 그리고 동전은 몇개가 필요한지 출력하라.

4. 입력받기, 자료형 변환

프로그래밍은 입력(input)을 전달받아 출력(output)을 만들어내는 과정을 의미한다.

1) 파이썬으로 입력받기



"문자를 입력하세요:" 에 hi를 입력하면 hi라는 결과가 출력되고
type은 str로 출력된다.

2) 자료형 변환하기

입력값은 모두 문자로 처리가 된다.
입력을 숫자로 처리하기 위해선 문자열 타입(자료형)을 강제로 변환해야한다.
정수(int)로 변환하기 위해서는 int() 함수를, 실수(float)는 float()를 사용한다.

(1) 숫자 → 숫자

(2) 문자 → 숫자


(3) 숫자 → 문자

✅ 정리
✔️ 사용자를 통해 입력받기는 input()사용
✔️ input()으로 입력받은건 무조건 문자열!
✔️ 자료형 변환하기

  • 정수형으로 바꾸고 싶을땐 int()
  • 실수형으로 바꾸고 싶을땐 float()
  • 문자열로 바꾸고 싶을땐 str()

✅ 응용
숫자로 생일을 입력받아 연도와 월, 일을 출력하기

5. 비교연산자와 조건문

1) 비교연산자

2) 논리연산자

  • a and b : a와 b 모두 참이여야 참이다.
  • a or b : a와 b 둘 중 하나만 참이여도 참이다.
  • not a : a가 거짓이면 참이다. a가 참이면 거짓이다.

3) if문

파이썬의 경우 들여쓰기에 예민한 언어이다.
들여쓰기 된 코드는 바로 위의 코드, 이경우엔 조건문에 종속이 된다.
들여쓰기가 중괄호 {}의 역할을 한다.

if 조건문1 → 만약 조건문1이 "참"이라면 실행문1이 실행
elif 조건문2 → 만약 조건문1이 "거짓"이고, 조건문2가 "참"이라면 실행문2가 실행
else → 조건문1, 조건문2가 모두 "거짓"이라면 실행문3이 실행

✔️ if a in b

✅ 응용
1) 세과목의 점수를 입력받아 평균 점수가 50점 이상이면'합격', 50점 미만이면 '불합격'을 출력해주세요.

2) 하나의 단어 'a'와 하나의 문장'b'을 입력받아 b안에 a가 있다면 '단어가 있습니다.'를 출력하고 없다면 '단어가 없습니다.'를 출력해주세요.

6. 반복문

1) for문


반복문도 조건문처럼 다음줄에서 tab을 통해 들여쓰기를 해줘야한다!
range()함수는 바로 숫자 리스트를 만들어주기 때문에 for문과 함께 쓰인다.

range(시작숫자, 끝나는 숫자)는 변수가 시작 숫자부터 (끝나는 숫자-1)까지 1씩 증가하는 동안이라는 뜻이다.
range(10)은 range(0,10)과 같은 의미이다. 따라서 i는 0부터 시작해서 9까지 1씩 증가하면서 for문을 돌게 된다.
=> 결과: 0 1 2 3 4 5 6 7 8 9


2) while문


조건문이 참이면, while 내부의 실행문으로 들어간다.

✅ while문을 사용한 무한반복문


이 코드를 실행하게 되면 무한으로 Hello World가 출력이된다.
이러한 상황을 피하기 위해 break구문을 사용하여 while문을 벗어난다.

while True:를 통해 무한 반복문을 만든 다음, number를 통해 사용자의 입력값을 받는다.
만약 number이 1이라면 "문이 열렸습니다."가 출력되고 다시 while문을 반복한다.
number가 2라면 break를 통해 while문을 벗어나게 되고, 프로그램이 종료된다.

✔️ 범위가 정해져 있을 때는 for문
✔️ 범위가 정해져 있지 않을 때는 while문
✔️ while+true를 이용하면 무한반복 가능
✔️ break를 사용하면 반복문 탈출 !

✅ 응용



if, while 응용들어가니까 어렵땅,,,,

7. 함수

함수란? 어떠한 기능을 하는 코드 덩어리
함수를 사용하는 이유는 반복적인 코드를 줄이기 위해서다.

✔️ def : 함수를 만들때 가장 먼저 적어줘야하는 키워드로, def 뒤에 나오는 코드는 함수다! 라는 것을 알려주는 역할
✔️ 함수명 : print, input 등의 함수의 이름을 의미한다.
✔️ 매개변수 : 이 함수에 전달될 값을 의미한다. 만약 print(10)이라고 코드를 작성했다면, 10이 매개변수가 된다. 그 함수 내부에서 사용되는 변수값을 입력받는다.

def로 함수임을 알려주었고, 함수의 이름은 getSum, 매개변수로는 a,b가 있다.
return이란 함수가 끝나고 돌려줄 값을 정하는 것

🧐 getSum은 매개 변수가 a, b인데 num1, num2가 들어가는 이유는?
함수의 매개변수는 기본적으로 값을 받아오는 역할을 한다.
a와 b는 값을 받을 받을 그릇이기 때문에 num1의 값이 a로 옮겨지기만 할 뿐 변수의 이름은 중요하지 않다.
✅ 응용

8. 리스트

1) 리스트

example_lst=[1,3,5,7,9]

대괄호[]와 콤마를 사용해 선언하면 된다.

example_lst[1,2,3,4,5]

print(example_lst[0])
print(example_lst[1])
print(example_lst[2])
print(example_lst[3])
print(example_lst[4])

리스트이름[인덱스]의 형식을 통해 값을 꺼내면 된다.
하지만 이렇게 하나하나씩 다 꺼낼 수 없으니 이럴때는 for문을 사용한다!

(1) 인덱스를 사용해 리스트에 접근

example_lst[1,2,3,4,5]

for i in range(0,len(example_lst)):
	print(example_lst[i])

len함수는 매개변수로 전달된 변수의 크기를 구해준다.

결과 :
1
2
3
4
5

(2) 반복문을 사용해 리스트 데이터를 받아오기

example_lst[1,2,3,4,5]

for i in example_lst:
	print(i)

리스트 자페를 반복문의 대상으로 사용하였다.

결과:
1
2
3
4
5

2) 리스트 요리하기

(1) 리스트 자르기

리스트를 자르는 방법을 리스트 슬라이싱(List Slicing)이라고 부른다.

example_lst[1,2,3,4,5,6,7,8,9,10]

sliceOne = example_lst[0:5]
sliceTwo = example_lst[5:10]
sliceThree = example_lst[:5]
sliceFour = example_lstt[5:]

print(example_lst)
print(sliceOne)
print(sliceTwo)
print(sliceThree)
print(sliceFour)
결과 :
[1,2,3,4,5,6,7,8,9,10]
[1,2,3,4,5]
[6,7,8,9,10]
[1,2,3,4,5]
[6,7,8,9,10]

콜론 (:)을 포함시켜 리스트의 일부분을 자를 수 있다.
list[a:b]라고 슬라이싱을 하면 list의 인덱스 a 값부터 인덱스 b의 값까지 잘리게 된다.
list[:b]는 0부터 b의 값까지,
list[a:]는 인덱스 a부터 리스트의 끝까지로 인식이된다.

(2) 리스트 삽입

리스트의 마지막에 값을 삽입하는 append 함수와
리스트의 특정 인덱스에 값을 삽입하는 insert 함수가 있다.

✔️append

example_lst[1,2,3,4,5]
print(example_lst)

example_lst.append(6)
print(example_lst)
결과:
[1,2,3,4,5]
[1,2,3,4,5,6]

✔️insert

example_lst[1,2,3,4,5]
print(example_lst)

example_lst.insert(3,6)
print(example_lst)
결과:
[1,2,3,4,5]
[1,2,3,6,4,5]

insert함수는 list.insert(인덱스,값)의 형태로 사용된다.
인덱스3의 위치에 6을 넣게된다.

(3) 리스트에서 값을 제거

✔️ del

example_lst[1,3,5,7,9]
print(example_lst)

del example_lst(3)
print(example_lst)
결과:
[1,3,5,7,9]
[1,3,5,9]

del특정 인덱스의 값을 제거할때 사용한다.
3번 인덱스의 값을 제거해 리스트에서 7이 없어진 것 !

✔️ remove

example_lst[1,3,5,7,9]
print(example_lst)

example_lst.remove(7)
print(example_lst)
결과:
[1,3,5,7,9]
[1,3,5,9]

remove을 통해 원소를 제거한다.
그래서 7이 없어진 것 !

9. 튜플, 집합

1) 튜플

튜플 vs 리스트

  • 리스트는 []로, 튜플은 ()로 감싼다.
  • 리스트는 값의 생성, 삭제, 수정이 가능하지만, 튜플은 값을 바꿀 수 없다.
example_tupleOne = (1,2)
example_tupleTwo = ("python",2,5)
example_tupleThree = (0.4(1,2,3))

print(example_tupleOne)
print(example_tupleTwo)
print(example_tupleThree)
결과:
(1,2)
('python',2,5)
(0,4,(1,2,3)

튜플은 값을 추가, 삭제는 할 수 없지만
+,* 연산으로 튜플을 추가, 반복 할 수 있다.

example_tupleOne = (1,2,3)
example_tupleTwo = (4,5,6,7)

plus_tuple = example_tupleOne + example_tupleTwo
multi_tuple = example_tupleOne*2

print(plus_tuple)
print(multi_tuple)
(1,2,3,4,5,6,7)
(1,2,3,1,2,3)

튜플의 또다른 장점은 함수의 리턴 값을 한꺼번에 여러 개를 받을 수 있다는 점이다.

def minmax(ex_lst):
return min(ex_lst),max(ex_lst)

ex_lst = [1,2,3,4,5]
result_tuple = minmax(ex_lst)

print(result_tuple)
결과:
(1,5)

콤마로 분리해, 리스트의 최대/최솟값을 함수의 return 값으로 사용한다.
이 경우, 함수의 리턴값이 자동으로 튜플로 처리된다!

2) 집합

setOne = {1,2,3}
setTwo = set([7,6,5,4,1])
setThree = set("Hello World"!)

print(setOne)
print(setTwo)
print(setThree)
결과:
{1,2,3}
{1,4,5,6,7}
{'r','!','W','e','d','H','o',''}

집합은 {}를 이용해서 생성 할 수도 있고, set()를 통해서도 생성 할 수 있다.
단, {}를 이용해 생성 할 경우 원소를 넣지 않으면 집합이 아닌 딕셔너리가 생성이된다.

setTwo의 경우 [7,6,5,4,1]을 집합으로 만들었는데 {1,4,5,6,7}이 생성되고, setThree의 경우 "Hello World!"에서 l이 3개였는데 하나 밖에 생성되지 않았다.

이는 집합의 특성으로 발생하는 현상이다

집합의 특성
✅ 집합은 생성될 때, 중복된 값은 허락하지 않는다.
따라서 "Hello World!"에서 l이 하나 밖에 생성되지 않은 것
✅ 집합은 순서가 존재하지 않는다.
그래서 순서가 뒤죽박죽으로 된 것
✅ 집합은 인덱스를 통한 값의 접근이 불가능하다

(1) 교집합

& 또는 intersection 함수를 이용해서 구할 수 있다.

setOne = {1,2,3}
setTwo = {2,3,4}

print(setOne & setTwo)
print(setOne.intersection(setTwo))
결과:
{2,3}
{2,3}

(2) 합집합

|기호 혹은 union 함수를 이용해서 구할 수 있다.

setOne = {1,2,3}
setTwo = {2,3,4}

print(setOne | setTwo)
print(setOne.union(setTwo))
결과:
{1,2,3,4}
{1,2,3,4}

(3) 차집합

-기호 혹은 difference 함수를 이용해서 구할 수 있다.

setOne = {1,2,3}
setTwo = {2,3,4}

print(setOne - setTwo)
print(setOne.difference(setTwo))
결과:
{1}
{1}

3) 집합과 관련된 함수들

집합은 튜플과 다르게 값의 추가와 제거가 가능하다.

(1) 값의 추가

하나의 값을 추가 할 때 사용하는 add 함수,
여러 개의 값을 추가 할 때 사용하는 update함수

setOne = {1,2,3}
setTwo = {2,3,4}

print(setOne)
print(setTwo)

setOne.add(5)
setTwo.update([9,8,7])

print(setOne)
print(setTwo)
결과:
{1,2,3}
{2,3,4}
{1,2,3,5}
{2,3,4,7,8,9}

(2) 값의 제거

집합에서 원소의 제거는 remove함수를 사용해 특정 값 제거가 가능하다.
인덱싱을 할 수 없기 때문에, 값을 사용한 원소의 제거만 가능하다.

setOne={1,2,3}

print(setOne)

setOne.remove(2)

print(setOne)
결과:
{1,2,3}
{1,3}

💡정리하기

✔️ 튜플: ()

  • 인덱스로 접근가능
  • 값을 제거, 추가 할 수 없지만 +,* 연산으로 추가, 반복 가능
  • 함수의 리턴값을 한꺼번에 여러개 받기 가능

✔️ 집합: {},set()

  • 인덱스를 통한 값의 접근 불가능
  • 값의 제거와 추가 가능
  • 생성될 때, 중복된 값은 허락하지 않고 순서가 없다.

10. 딕셔너리

딕셔너리는 Key값value값을 가지고 있다.
key가 영어단어, value가 단어의 뜻이라고 생각하면 된다.

dic = {1:"python", 2:"C", 3:"java"}

딕셔너리는 중괄호 안에 선언하고, key:value 형태로 데이터를 저장한다.
즉, 1,2,3이 key이고, "python""C""java"가 value이다.

딕셔너리는 리스트와 다르게 순차적으로 요소들을 구할 수 없다.
즉, 인덱스로 접근 할 수 없다!
따라서 print(ex_dict[0])과 같이 인덱스를 사용해 코드를 작성하면 오류가 발생한다.

1) 딕셔너리에 데이터 추가

ex_dict = {"a":"python", "b":"C", "c":"java"}

ex_dict["d"]="C++"
print(ex_dict)

ex_dict.update({"b":"javascript","e":"C#})
print(ex_dict)
결과:
{'a':'python','b':'C','c':'java','d':'C++'}
{'a':'python','b':'javascript','c':'java','d':'C++', 'e':'C#'}

✅ 하나의 key와 value를 추가하는 방법

dict[key]=value

✅ 여러 개의 key와 value를 추가하는 방법

dict.update({업데이트 할 딕셔너리 내용})

기존의 딕셔너리 안에 key 값이 존재하게 되면 기존의 key에 대한 value가 업데이트 할 딕셔너이릐 value로 대체된다.

2) key-value 삭제 방법

ex_dict = {"a":"python", "b":"C", "c":"java"}

del ex_dict["a"]

print(ex_dict)
결과:
{'b','C','c':'java'}

리스트와 유사하게 del 키워드와 key 값을 통해 key:value 쌍으로 없앨 수 있다.

3) key, value 쌍으로 추출하기

ex_dict = {"a":"python", "b":"C", "c":"java"}

print(ex_dict.keys())
print(ex_dict.values())
결과:
dict_keys(['a','b','c'])
dict_values(['python','C','java'])

=> 리스트형으로 변환

ex_dict = {"a":"python", "b":"C", "c":"java"}

keys_lst = list(ex_dict.keys())
values_lst = list(ex_dict.values())

print(keys_lst)
print(values_lst)
결과:
['a','b','c']
['python','C','java']

11. 클래스와 생성자

1) 클래스

흔히 클래스를 설명할때 붕어빵과 붕어빵 틀에 비유한다.
클래스는 붕어빵을 계속 만들 수 있는 을 의미하고
이 틀을 통해 만들어진 붕어빵객체라고 한다.

각각의 객체는 고유의 기능과 성격을 가지고 있고 서로 다른 객체들에 영향을 미치지 않는다 !

class 클래스이름:
	클래스내용(코드)

12. 클래스의 상속

profile
호기심이 많은 프론트엔드 개발자

0개의 댓글