-Summary-
파이썬 배경 지식, 기본 문법, 사칙 연산, 변수, 입력 함수 input, 출력 함수 print, 개행 문자 \n
01-18(Unit 1 ~ Unit 5.1)
자동차, 금융, 유통 생산, 의료 분야 등 사회의 대부분의 산업, 분야들이 소프트웨어를 활용해서 보다 편리하게 이루어지기에, 소프트웨어를 제작하는 프로그래밍 기술은 필수적이다.
알고리즘이란 문제에 존재하는 패턴을 토대로 문제를 해결하는 절차고 이를 코드로 작성하는 활동이 코딩(프로그래밍)이다.
파이썬은 네덜란드의 귀도 반 로섬이 개발한 객체지향 프로그래밍 언어로 문법이 간단해 배우기 쉽다고 다양한 모듈들이 존재해 여러 분야에 많이 쓰인다.
파이썬은 대, 소문자 구분을 하므로 대소문자를 정확히 입력해야한다.
대부분의 프로그래밍 언어(c, c++, c# 등등)는 한 구문이 끝날 때 ;(세미클론)을 사용해 줘야 하는데(ex : printf("Hello, World!");) 파이썬은 세미클론을 붙여 주지 않아도 된다.(붙여도 오류가 나지는 않는다) 주로 파이썬에서 세미클론은 파이썬 쉘이나 idle에서 한 줄에 여러 명령을 사용할 때 ;으로 구분해준다.
-cmd에서 파이썬 코드 실행-
cmd 창에서 코드 저장 경로로 이동한 다음 python (파일 이름).py를 입력하거나 (파일 이름).py로 입력해도 된다..
-파이썬 에러-
NameError : 함수 이름이 잘못됐을 때 발생.
SysntaxError : 구문 오류. 따옴표로 묶어주지 않는 등의 문법 오류 존재 시 발생.
-print 함수-
print 함수는 화면에 문자를 출력하는 함수다.
print('Hello World')
위는 Hello World 글자를 출력해주는 코드로 파이썬은 print라는 함수를 호출해 출력을 한다.
출력 방식은 print 뒤의 괄호 안에 문자열일 경우 ' '나 " ", """ """로 감싸주면 되고, 변수일 경우 따옴표 없이 변수명만 써주면 된다. 만약 문자열을 따옴표로 감싸지 않는다면 구문 오류인 SysntaxError가 발생한다.
문제의 목적은 Hello, world와 Python Programming을 각 줄에 출력되게 해야 한다. 앞서 배운 문자열을 출력해 주는 함수인 print를 사용해 코드를 작성하면 된다.
print('Hello, world!')
print('Python Programming')
코드는 이렇게 작성하면 되는데, 이미 Hello, world! 를 출력하는 코드와 2행을 출력하는 print문이 있으므로 2행 print문의 빈칸에 'Python Programming'을 넣어주면 된다.
Hello, world!를 2번 출력하는 것이 문제의 목적이다. 이 문제 역시 print 함수를 사용해서 Hello, world!를 출력하면 될 것 같다.
print('Hello, world!')
print('Hello, world!')
-주석-
주석(comment)이란 코드에서 사람만 알아볼 수 있도록 작성한 부분이다. 주석을 작성해 실행해도 파이썬 인터프리터는 주석은 실행하지 않으므로 실행에 영향을 주지 않는다. 보통 주석은 코드의 설명을 적거나 특정 코드를 사용하지 않을 때 사용한다.
-한 줄 주석
주석 처리할 부분 앞에 #을 써주면 해당 줄에 적힌 #의 뒷부분이 주석처리된다.
print('Hello World!') # Hello World를 출력
# Hello
# World
-여러 줄 주석
코딩 도장 수업에는 나오지 않았지만 여러 줄을 주석처리할 때는 각 줄에 #을 써줘도 되지만 """ """로 처리해주면 편리하다.
print('Hello World!')
"""
주석
주석
주석
"""
-들여쓰기-
들여쓰기란 가독성을 위해 코드를 일정한 간격으로 띄워서 작성하는 것이다. 들여쓰기 종류에는 공백을 2칸 주는 방법, 공백을 4칸 주는 방법, Tab 키를 이용한 방법이 있지만, 보통 들여쓰기는 Tab키를 이용해서 많이 했다.
파이썬은 들여쓰기 자체가 문법이므로(ex : if,for,while 등 안에 들어가는 코드는 모두 들여쓰기가 되어 있어야한다.) 들여쓰기를 하지 않는다면 오류가 난다. 파이썬 코딩 스타일 가이드 PEP 8은 들여쓰기 공백 칸 수를 4칸으로 규정하므로 왠만해서는 spacebar 4번 혹은 Tab키를 눌러서 들여쓰기 하는 것이 좋다.
코드 블록은 특정 동작을 위해 코드가 모여 있는 것인데, 파이썬은 들여쓰기를 통해 코드 블록을 구분한다.
중요한 건 같은 코드블록 안에서 들여쓰기의 공백 칸 수가 다르면 안된다. 또한 처음 알게 된 사실인데 공백과 Tab키를 섞어 쓰면 안된다고 한다.
if True:
print('True') # 올바른 들여쓰기의 예
if True:
print('True') # 잘못된 들여쓰기의 예
if True:
print('True') # 잘못된 들여쓰기의 예 2
print('True')
공백과 Tab 키를 섞어 쓰면 안된다는 것을 처음 알게 돼서 직접 실험을 해봤는데 결과가 오류 없이 출력됐다.
그냥 공백 칸수가 같다면 오류를 발생시키지 않는 것 같다.
-파이썬 숫자의 자료형-
다른 언어들과 마찬가지로 파이썬에서 숫자의 자료형은 정수형(int), 실수형(float) 등으로 나눠진다.
int는 integer(정수)를 줄인 말이고, float는 floating point(부동 소수점)을 줄인 것이다.
-정수-
-사칙연산
덧셈 : +
뺄셈 : -
곱셈 : *
제곱 : **
나눗셈-몫(소수점 포함) : /
나눗셈-몫(소수점 제거) : //
나눗셈-나머지 : %
파이썬에서 사칙연산은 위에 적은 기호로 수행된다.
-형 변환
결과 값이 실수로 나왔을 때 이 결과 값을 정수형으로 변환시킬 수 있다.
위의 실습 결과 같이 실수형 값이나 실수형 결과가 나오는 계산식 앞에 int()를 붙여주면 결과 값이 정수형으로 변한다. 또한 문자 형태로 적은 값도 int를 붙여준다면 정수형으로 변환된다. 단 문자 형태를 정수형으로 변환 시킬 경우 정수로 된 문자만 가능하다. int('aa')는 불가능
-자료형 확인
파이썬에서 숫자도 역시 객체로 불리는데, 이 객체의 자료형을 알아내려면 type 함수를 쓰면 된다.
-진수 표현-
2진수 : 0b
8진수 : 0o
16진수 : 0x
01-19 (Unit 5.2 ~ Unit 7.5)
-실수-
-사칙연산
실수 역시 정수와 마찬가지로 똑같은 기호(+,-,*,/ 등)로 연산이 수행된다.
또한 실수와 정수의 연산 또한 가능하다. 다만 정수와 실수를 연산해서 나온 결과는 실수형이다.
위와 사진과 같이 int형이던 변수 a에다 실수 1.2를 더하니 자료형이 float로 변하는 것을 볼 수 있다.
-형 변환-
실수형의 형 변환 역시 정수와 마찬가지로 값이나 계산식 앞에 float()를 붙여준다면, 실수형으로 형 변환이 된다.
-자료형 확인
마찬가지로 type를 붙여준다면 자료형을 알 수 있다.
-복소수-
(복소수는 예전에 배운적이 있지만 정확하게는 기억이 안나서 개념부터 정리하겠습니다.)
-허수
제곱해서 -1이 되는 수를 허수라고 한다. ±√-1
어떤 실수든 제곱한다면 >= 0, 즉 0보다 같거나 크게 되는데, 제곱해서 -1이 되는 실수는 존재할 수 없으므로 이 수를 허수라고 부른다.
√-1 = i, 허수의 약자인 imaginary number의 첫글자를 따, 허수를 i로 표현.
-복소수 의미
실수와 허수가 섞여 있는 수(식)를 복소수라고 한다. 또한 복소수 a+bi에서 a를 실수 부분, b를 허수부분이라 한다.
-파이썬 복소수
파이썬에서는 실제 수학의 기호 i가 아닌 j로 허수를 표현한다.
실수를 복소수로 형 변환을 할 때는 complex() 괄호안에 실수를 넣으면 된다.
파이썬에서 /은 나누기를 뜻한다. 다만 다른 언어들과 다르게 단순히 나눈 정수 몫을 출력하는게 아니라 소수점 단위까지 계산하기 때문에 답은 b가 아니라 d다.
실수로 형 변환하는 방법은 float([변환할 수 or 계산할 식 or 문자(숫자)])다. 따라서 c가 올바르다.
이건 단순히 수학 계산식이다. 괄호 먼저 계산하고 그 다음 곱하기를 계산, 마지막으로 +부분을 계산해주면 답이 나온다.
소음이 가장 심한층을 구하는 식 : 0.2467 * 12 + 4.159
단 정수로 출력해야하므로 이를 파이썬으로 작성해 보면
print(int(0.2467 * 12 + 4.159))
스킬의 피해량을 구하는 식 : 102 * 0.6 + 225
print(102 * 0.6 + 225)
-변수-
-변수 선언
변수 선언은 (변수 이름) = (값) 이런식으로 하면 된다.
변수의 이름은 대소문자 구분, 특수문자 사용 불가, if, while 같은 파이썬에서 쓰이는 함수나 단어들은 사용할 수 없다.
변수 여러개를 한번에 선언 할때는 (변수1), (변수2), (변수3) = (변수1에 들어갈 값), (변수2에 들어갈 값), (변수3에 들어갈 값) 이렇게 선언할 수 있고, 선언할 변수들의 값이 다 같을 때는 (변수1)=(변수2)=(변수3) = (값) 이렇게 한번에 값을 할당해 줄 수 있다.
또한 변수 2개의 값을 서로 바꿀때는 x, y = y, x로 해주면 값을 쉽게 바꿔줄 수 있다.
-변수 연산
위에 적은 값들의 사칙연산이랑 똑같이 +- 등의 기호를 통해 변수끼리 혹은 변수와 값끼리 연산이 가능하다.
아래는 변수 연산에 사용되는 줄임 기호다.
a+=2 = a = a+2
a-=2 = a = a-2
a*=2 = a = a*2
a/=2 = a = a/2
변수의 앞에 -을 붙여준다면 변수에 -를 곱한 값이 결과값이 된다.
-변수 자료형 확인
type([확인할 변수])로 해준다면 자료형을 확인할 수 있다.
-변수 삭제
del을 사용한다면 변수를 삭제할 수 있다.
del (삭제할 변수)
-파이썬의 null
파이썬에서 변수에 빈값을 넣을 때 None을 사용해주면 된다.
위 사진처럼 a에 None 값을 넣어주니 a를 출력했을 때 아무것도 나오지 않는다.
-input 함수-
input 함수는 사용자의 입력을 받는 함수다. (변수명) = input() 이런식으로 써주면 input 함수를 통해 사용자에게 입력 받은 값을 앞에 적은 변수에다가 넣어주는데, 이때 들어가는 값은 str(문자)형이다.
input()을 인자 없이 써줘도 상관은 없지만, input('==>') 이런식으로 써주게 되면, 입력을 받을 때 ==>이 앞에 적힌 상태로 입력을 받을 수 있다.
입력 값을 정수형이나 실수형 같은 다른 자료형으로 받고 싶다면 input() 함수를 int(input()) 이런식으로 원하는 자료형으로 바꿔주는 함수로 input 함수를 감싸주면 된다.
-split 함수-
split 함수는 주어진 문자열을 기준 문자열 기준으로 분리해주는 함수다.
a = "Hello World"
b, c = a.split(' ')
위 코드는 Hello World 문자 값이 들어있는 변수 a를 split 함수를 이용해서 ' '(공백)기준으로 분리해, 분리한 값들을 각 각 b와 c에 넣어준다. 공백이 아니더라도 ,(쉼표) 같이 특정 기준 문자열을 split에 넣어주면 기준에 따라 분리된 값을 얻을 수 있다.
-map 함수-
map 함수는 여러개의 값들을 한번에 다른 자료형으로 변환할 때 사용된다.
a, b = map(int, input().split())
위 코드처럼 input 함수와 split 함수를 응용한다면 분리된 값을 하나하나 int형으로 바꿔줄 필요없이 한번에 int형으로 형변환을 해줄 수 있다. 다른 형으로 바꾸고 싶으면 map의 첫번째 인자에 원하는 자료형으로 바꿔주는 함수를 넣어주면 된다.
변수 선언 방법은 (변수명) = (값)이므로 답은 c다.
변수 이름으로 특수문자, 파이썬에서 쓰이는 단어, 그리고 숫자로 시작이 불가하다.
a : 숫자로 시작 X
b : 가능 O
c : 파이썬에서 쓰이는 단어,함수 X
d : 가능 O
e : - 특수문자 사용 불가 X
f : 가능 O
g : 숫자로 시작 X
h : % 특수문자 사용 불가 X
d가 잘못됐다. c -= b는 c = c - b를 줄인건데, c의 값이 선언되지 않았기 때문에 c-b를 계산할 수 없다.
입력한 값을 두개의 변수에 분리해 저장하려면 split 함수를 사용하면 된다. 또한 문제에서 실수로 변환하여 저장해야 된다는 조건이 있기 때문에 나눈 값을 float() 함수로 실수형 변환을 해주거나 map 함수를 사용해서 한번에 변환을 하면 된다.
a, b = map(float,input().split())
따라서 답은 d
정수 세개를 입력받고 합계를 출력하는 코드를 한줄에 작성해야하므로 input으로 입력받고, split으로 분리, map으로 정수형으로 변환을 하면 된다.
a, b, c = map(int, input().split(' ')
print(a+b+c)
50, 100, None이 출력되야하는데 이 값들을 입력해주는 부분이 없다. 따라서 변수 a,b,c를 만들고 값들을 각각 할당해주면 된다.
a = 50
b = 100
c = None
print(a)
print(b)
print(c)
4개 과목의 점수를 입력 받고 점수들의 평균을 구해서 출력하는게 문제의 목적이다.
주어진 줄이 2줄이므로, 1번째 줄에 입력을 정수형태로 받고 2번째 줄에 평균을 구해서 적으면 될 것 같다.
주어진 입력의 예를 보면 4개 과목의 점수가 공백으로 나눠 입력 되므로 split으로 공백을 기준으로 분리하면 된다.
kor, eng, math, scien = map(int, input().split())
print((kor+eng+math+scien)//4)
주의할점은 /만 써주면 소수점까지 나타내기 때문에 //를 써줘서 소수점 아래는 버려줘야한다.
-print 함수로 여러 값 출력-
위에서 print 함수는 값이나 변수 등을 출력해주는 함수라 적었는데, print 함수로 값을 1개만 출력할 수 있는게 아닌 여러 개 출력도 가능하다.
위 사진처럼 ,(쉼표)로 구분해준다면 여러 개의 값, 여러 개의 변수를 공백으로 구분해서 출력할 수 있다.
-sep
sep은 separator(구분자)의 약자로 print에 sep을 넣어준다면 여러 개의 값 사이에 원하는 문자를 넣어서 출력할 수 있다.
위 사진처럼 sep='[원하는 문자, 문자열]' 형식으로 적어준다면 값 사이로 원하는 문자가 적힌 상태로 출력이 된다.
-end
print 함수를 여러번 써보고 출력 결과를 보면, print 함수가 출력한 후 줄바꿈 기능도 같이 해준다는 것을 알 수 있다.
print를 여러 번 사용했을 때 모두 한줄로 출력하는 방법은 end를 사용해주면 된다.
위 사진처럼 출력할 값 뒤에 end=' '을 적어준다면 줄바꿈을하지 않는다. end 안에 공백 외에 원하는 문자를 적어주면 출력의 끝에 그 문자가 출력된다.
-제어 문자-
제어문자는 화면에 출력되지는 않지만 출력 결과를 제어하는 문자다. 제어문자는 \로 시작한다.
\n : 줄 바꿈
\t : Tab 키를 눌렀을 때와 같으며 여러 칸을 띄움
\\ : \ 문자를 출력
위 사진과 같이 출력에서 \n을 사용한다면 줄이 바뀌면서 출력이 된다.
\t를 사용한다면 tab 키를 누른 것처럼 여러 칸을 띄어서 출력할 수 있다.
또한 위 사진처럼 sep나 end를 응용해서 사용할 수 있다.
여러 값을 한줄에 출력하려면 ,로 구분해주거나 end를 사용하면 된다.
먼저 b는 3줄로 출력하기 때문에 아니고, a번은 콤마가 없어서 오류가 날 것이다. c번은 Python에 ' '로 감싸주지 않았고, d번은 올바르다. 마지막으로 e번은 ;로 구분해줬는데, 이러면 아마 구문오류가 날 것이다.
16:9를 출력하는 것이 목적이다. a번은 :가 특수 문자인데 ' '로 감싸주지 않아서 오류가 날 것이고, b는 :가 존재하지 않다. c번은 sep을 이용해 16:9가 출력하도록 올바르게 작성된 코드고, d는 end를 사용했는데 이러면 출력 결과가 16 9 :가 나올 것이다. e는 :를 문자열 처리를 안해줬다.
Hello와 Python을 두 줄로 출력하는 것이 목적이다. a번은 한줄 출력이고 b는 제어문자 \n으로 적절히 줄 변경을 해줘서 맞다. c는 end를 사용했는데 이러면 2단어가 한줄에 출력되고 마지막에 줄바꿈을 해주게 될 것이다. d는 sep으로 적절히 줄 변경을 해줬다. e는 중간에 \n을 넣어줬고 sep으로 붙어서 출력되게 했기에 문제의 목적대로 출력해줄 것 같다.
날짜와 시간이 2000/10/27 11:43:59 형식으로 출력되야 한다.
year, month, day는 sep으로 중간중간 /가 들어가게 해주면 될 것 같고 hour, minute, secod 역시 sep으로 중간 중간 :가 들어가게 하면 될것 같다. 중요한건 실행 결과를 보면 날짜와 시간이 모두 한줄에 출력되므로 연도 출력에 end=' '을 써줘야 한다.
year = 2000
month = 10
day = 27
hour = 11
minute = 43
second = 59
print(year,month,day,sep='/', end=' ')
print(hour,minute,second,sep=':')
입력이 공백으로 나눠서 들어오므로 공백을 기준으로 split해주면 되고, -형식과 연도와 시간을 T로 구분 그리고 : 형식은 sep과 end를 적절히 사용하면 될 것 같다.
year, month, day, hour, minute, second = input().split()
print(year,month,day,sep='-',end='T')
print(hour,minute,second,sep=':')
'Old (2021.01 ~ 2021.12) > Programming' 카테고리의 다른 글
파이썬 코딩도장 Unit 27 ~ 37 (0) | 2021.01.31 |
---|---|
파이썬 코딩도장 Unit 23 ~ 26 (0) | 2021.01.27 |
파이썬 코딩도장 Unit 20 ~ 22 (0) | 2021.01.26 |
파이썬 코딩도장 Unit 12 ~ 19 (0) | 2021.01.24 |
파이썬 코딩도장 Unit 8 ~ 11 (0) | 2021.01.21 |