Unit 7. 출력 방법 알아보기

7.1 값을 여러개 출력하기

print() 함수는 변수나 값 여러개를 콤마(,) 로 구분하여 넣을 수 있다.

print에 값을 콤마로 구분하여 넣으면 공백으로 구분되어 한 줄로 출력된다.

 

7.1.1 sep로 값 사이에 문자 넣기

sep는 구분자 라는 뜻의 separator에서 따온 것이다. 다음과 같이 print의 sep에 문자 또는 문자열을 지정해 주면 된다.

 

7.2 줄바꿈 활용하기

print 한번으로 값을 여러줄에 출력하는 것도 가능하다. sep에 개행문자인 \n을 넣으면 된다. 

값들 사이에 줄바꿈을 의미하는 \n이 들어가서 여러줄로 출력된 것이다. \n은 제어문자이기 때문에 화면에 출력되지는 않는다. \n도 문자이기 때문에 다음과 같이 print에 바로 넣어서 사용할 수 도 있다.

다른 제어문자는 한번 탭누른것 만큼 간격을 주는 \t가 있고, \문자 자체를 출력하려면 \\처럼 \을 두 번 써야 한다.

 

7.2.1 end 사용하기

print는 기본적으로 출력하는 값 뒤에 \n을 붙여 print를 여러번 사용하게 되면 자동으로 줄바꿈이 된다. print의 end에 기본적으로 \n이 지정된 형태이기 때문에 그런것인데 다음과 같이 end에 문자 또는 문자열을 지정하면 출력하는 값 끝에 나올 문자열을 지정해 줄 수 있다.

print(1, end='')    # 빈 문자열
print(2)
print('========================')

print(1920, end='x')    # 문자 x
print(1080)

 

7.3 퀴즈

정답은 d 이다.

정답은 c 이다.

정답은 b,d,e이다.

 

7.4 연습문제 : 날짜와 시간 출력하기

정답은 다음과 같다.

1. sep='/', end=' '

2. sep=':'

출력 결과가 한줄이고, 두 print사이에 공백이 있으므로 첫번째 print에는 end에 공백 한 칸이 들어가야 한다.

 

7.5 심사문제 : 날짜와 시간 출력하기



정답은 다음 코드와 같다.

print(year, month, day, sep='-', end='T')

 

Unit 8. 불과 비교, 논리 연산자 알아보기

8.1 불과 비교 연산자 사용하기

8.1.1 비교 연산자의 판단 결과

불(boolean)은 True, False로 표현하며 자료형의 일종이다. 

파이썬에서는 비교 연산자의 판단 결과로 True, False를 사용한다. 비교 결과가 맞으면 True, 틀리면 False이다. 

 

8.1.2 숫자가 같은지 다른지 비교하기

두 숫자가 같은지 비교할때는 ==(equal), 다른지 비교할 때는 !=(not equal)을 사용한다. 

 

8.1.3 문자열이 같은지 다른지 비교하기 

숫자와 동일하게 문자열도 ==, !=로 비교 가능하다. 문자열은 대소문자를 구분하여 같은 단어라도 대소문자가 다르면 다르다고 판단한다.

 

8.1.4 부등호 사용하기

부등호는 수학의 부등호와 동일하다. <(미만), >(초과), <=(이하), >=(이상)이다. 

비교 기준은 항상 첫번째 값이다. 첫번째 값보다 큰지, 작은지, 같은지, 다른지를 비교한다.

 

8.1.5 객체가 같은지 다른지 비교하기

객체가 같은지, 다른지 비교하는 것은 is와 is not 이다. ==과 !=는 값 자체를 비교하는 것이고, is와 is not는 객체를 비교하는 것에서 차이점이 있다.

1과 1.0은 값은 같지만 객체는 정수와 실수로 다르기 때문에 ==에서는 True가 나왔고, is 에서는 false가 나왔다. 또한 다음을 보면 is와 is not는 객체 뿐 아니라 값도 함께 일치해야 참을 반환한다는 것도 알 수 있다.

정수 객체와 실수 객체가 다른것은 id 함수를 사용하여 알  수 있다. id 함수는 객체의 고유한 값(메모리 주소)를 반환한다.

값 비교에는 is 를 사용하면 안된다. 아래와 같이 값이 한번 할당 됬던 상태에서 다른 값을 할당하면 메모리 주소가 달라질 수 있기 때문이다.

 

8.2 논리 연산자 사용하기

논리 연산자에는 and, or, not가 있다. 

and 연산자는 비교하는 두 값이 모두 True 여야 True 이다. 하나라도 False가 있으면 False가 나온다.

or 연산자는 두 값중 하나라도 True 이면 True 이다.

not 연산자는 논리값을 뒤집는다. 

위와 같이 여러개의 논리 연산자가 사용됬을 경우 연산 우선 순위는 not, and, or순서이다. 따라서 위 코드는 False and Fase or True 가 되고, False or True 가 되서 결과적으로 True가 나온다. 괄호로 묶어서 보면 다음과 같다.

 

8.2.1 논리연산자와 비교연산자를 함께 사용하기

연산 우선순위는 비교연산자가 논리연산자보다 높아서 비교 연산을 먼저 판단하고, 논리연산을 판단한다. 

 숫자에서 0은 False 이고, 0이 아닌값은 True이다. 문자열은 내용에 관계 없이 True 이다. 정수, 실수, 문자열 등을 불로 변환하려면 bool함수를 사용해야한다. 

 

8.2.2 단락평가

단락 평가는 첫 번째 값만으로 결과가 확실할 때 두 번째 값은 확인 하지않는 방법이다. 아래와 같은 경우 and 연산이기 때문에 두번째 값은 확인하지 않고 바로 False로 판단할 수 있다.

위와 같은 경우 파이썬에서 논리 연산자는 마지막으로  단락 평가를 실시한 값을 그대로 반환하기 때문이다. or 연산도 마찬가지로 마지막 단락 평가한 값이 반환된다. 

 

8.3 퀴즈 

정답은 c 이다.

정답은 d 이다. 

정답은 b,c이다.

정답은 d 이다.

 

8.4 연습문제 : 합격 여부 출력하기

정답은 아래 코드와 같다.

korean >= 50 and english >= 50 and mathematics >= 50 and science >= 50

and 연산의 경우 연산하는 모든 값이 True여야 True를 반환하기 때문에 한 과목이라도 50점 미만인 과목이 있으면 False를 반환한다.

 

8 .5 심사문제 : 합격 여부 출력하기

정답은 아래 코드와 같다.

kor, eng, math, sci = map(int, input().split())
print(kor >= 90 and eng > 80 and math > 85 and sci >= 80)

변수가 여러개 필요하기 때문에 map()과 split()으로 여러 변수에  값을 저장한 후 한 과목이라도 조건에 만족하지 않으면 False가 출력되야 하므로 and 논리 연산을 이용하였다.

 

Unit 9. 문자열 사용하기

문자열은 영문 뿐 아니라 한글또한 가능하다. 또한 문자열을 만드는 법은 작은따옴표(' ') 이외에도 큰따옴표(" "), 작은따옴표 세 개로 묶는것(''' '''), 큰따옴표 3개로 묶는것(""" """)이 있다.

 

9.1.1 여러 줄로 된 문자열 출력하기 

다음과 같이 작은따옴표 세 개(''' ''') 또는 큰 따옴표 세 개(""" """)를 사용하면 여러줄 문자열을 출력하거나 변수에 저장할 수 있다. 

위와 같이 여러줄의 문자열을 변수에 저장할 수 있고, 콘솔에서 확인하면 개행문자(\n)가 있고, print()함수를 사용하면 여러 줄로 출력 됨을 확인할 수 있다.

여러줄의 문자열을 출력할 때는 개행문자(\n)을 사용할 수도 있다.

 

9.1.2 문자열 안에 작은 따옴표나 큰 따옴표 포함하기

문자열을 사용하다 보면 작은 따옴표나 큰 따옴표를 사용해야 할 경우가 있다. 문자열 안에 작은 따옴표를 넣고 싶으면 큰 따옴표를 사용해 문자열을 만들고, 큰 따옴표를 넣고 싶다면 작은 따옴표를 사용해 문자열을 만들면 된다.

또한 따옴표 3개를 감싸서 문자열을 만들면 작은따옴표와 큰따옴표 모두 사용 가능하다. 

작은따옴표로 만든 문자열에 작은따옴표를 넣거나 큰따옴표로 만든 문자열에 큰따옴표를 넣으려면 역슬래쉬(\)를 사용하면 된다.

 

9.2 퀴즈

정답은 b,d이다.

정답은 a, c이다.

정답은 a,c,d이다. 

 

9.3 연습문제: 여러줄로 된 문자열 사용하기

'Python is a programming language that lets you work quickly \nand \nintegrate systems more effectively.'

코딩도장 예시 답안도 가능하고 위와 같은 답안도 가능하다. 문자열에 개행문자를 넣은 것이다. 

 

9.4 심사문제: 여러줄로 된 문자열 사용하기

정답은 다음 코드와 같다.

s = ''''Python' is a "programming language"
that lets you work quickly
and
integrate systems more effectively.'''

또한 개행문자와 \를 사용하여 한 줄로 표현하는 것도 가능하다. 

 

Unit 10. 리스트와 튜플 사용하기

리스트는 목록 이라는 뜻이며 값을 일렬로 늘여놓은 형태이다.

 

10.1 리스트 만들기

변수에 값을 저장할 때 [ ](대괄호)로 묶어주면 리스트가 되며, 각 값은 콤마(,)로 구분한다.

리스트에 저장된 각 값들은 요소(element)라고 부른다.

 

10.1.1 리스트에 여러가지 자료형 저장하기

리스트는 문자열, 정수, 실수, 불등 여러가지 자료형을 한 번에 저장할 수 있다.

 

10.1.2 빈 리스트 만들기

빈 리스트를 만들때는 []만 지정하거나, list()를 이용하여 만들 수 있다. 

보통 빈 리스트는 만들어두고 새 값을 추가하는데 쓰인다.

 

10.1.3 range를 사용하여 리스트 만들기

range()는 연속된 숫자를 생성한다. 10을 지정하면 0에서 9까지 생성된다. 

시작하는 숫자와 끝나는 숫자도 지정할 수 있다. range(5,10)과 같이 지정하면 5부터 9까지 생성된다. 끝 숫자는 포함하지 않는다.

증가폭도 지정할 수 있다. range(10,20,2)와 같이 지정하면 10에서 19까지 2씩 증가하게 된다. 증가폭에 음수를 지정하면 지정한 수만큼 값이 감소한다. range를 사용하여 리스트를 만드는 방법은 다음과 같다.

 

10.2 튜플 사용하기

튜플은 리스트처럼 요소를 일렬로 저장하지만, 저장된 요소를 변경, 추가, 삭제가 불가능하다.

변수에 값을 저장할 때 ( )괄호로 묶으면 튜플이 되며 각 요소들은 ,(콤마)로 구분한다. 괄호로 묶지 않고 콤마로 구분만 해도 튜플이 된다. 

리스트처럼 여러 자료형을 섞어서도 저장이 가능하다.

튜플은 요소가 절대 변경되지 않고, 유지되어야 할 때 사용한다. 튜플을 만든 상태에서 요소를 변경하려 하면 에러가 발생한다. 

 

10.2.1 요소가 한 개 들어있는 튜플 만들기

값 한개를 괄호로 묶으면 튜플이 아니라 그냥 값이 된다. 요소가 한개인 튜플을 만드려면 값을 괄호로 묶고 콤마를 붙이거나 괄호없이 콤마만 붙여도 된다.

 

10.2.2 range를 활용하여 튜플 만들기

리스트와 동일하게 tuple() 안에 range()를 넣으면 된다.

 

10.2.3 튜플을 리스트로 만들고, 리스트를 튜플로 만들기

tuple() 안에 리스트를 넣거나 list() 안에 튜플을 넣으면 새로운 튜플이나 리스트를 만들 수 있다.

 

문자열을 리스트나 튜플에 넣으면 문자 하나 하나가 리스트나 튜플의 요소로 들어가게 된다. 

리스트와 튜플을 사용하여 다음과 같이 변수 여러개를 한 번에 만들 수 있다.

리스트 변수와 튜플 변수를 사용하여 변수 여러개를 만들 수 있다. 이와 같이 리스트와 튜플의 요소를 변수 여러개에 할당하는 것을 리스트 언패킹, 튜플 언패킹 이라고 한다.

리스트 패킹 또는 튜플 패킹은 변수에 리스트나 튜플을 할당하는 것을 의미한다. 

 

10.3 퀴즈

답은 a,c,d이다.

답은 b,c,e이다.

답은 d이다.

 

10.4 연습문제: range로 리스트 만들기

답은 다음 코드와 같다.

a = list(range(5,-10,-2))

 

10.4 range로 튜플 만들기

답은 다음 코드와 같다.

inp = int(input())
tu = tuple(range(-10, 10, inp))
print(tu)

 

Unit 1. 소프트웨어 교육과 파이썬

1.1 문제 해결을 위한 과학적 사고

전화기, 자동차, 영화산업, 의료 기술, 인공지능 등의 발달로 소프트웨어의 사용 범위는 계속 넓어지고 있다. 그 결과 소프트웨어를 적절히 사용한 기업들은 크게 성장하였으며 소프트웨어 기술은 점점 중요해지고 있다. 

소프트웨어는 지금까지 불편했던 문제들을 해결하기 위해 개발되었다. 복잡한 문제들을 소프트웨어를 사용하여 어떻게 해결할 수 있을까 ?

 

1.1.1 복잡한 문제를 작은 문제로 분해

자율주행 시스템의 경우 사람의 눈과 귀 역활을 하는 카메라와 센서가 주변 상황을 인식하고, 팔과 다리 역활을 하는 각종 제어 장치를 통해 자동으로 움직이게 하고, 주변 상황 정보, GPS 정보, 지도 정보 등을 이용하여 하나의 자율주행 시스템을 만든다. 이처럼 복잡한 문제를 작은 문제로 나누어 하나씩 해결하게 되면 결국 큰 복잡한 문제도 해결할 수 있게 된다. 

 

1.1.2 날씨 데이터를 그래프로 그리는 문제

기상청 웹 사이트의 날씨 데이터(주요 도시의 기온과 습도)를 막대 그래프로 나타내기 위한 방법은 다음과 같다.

웹사이트는 보통 HTML로 글자와 그림을 표시하기 때문에 HTML을 분석하여 도시 이름, 기온, 습도 값이 저장된 위치를 찾아야 한다. 이후, 분석한 데이터를 토대로 기온, 습도 정보를 가져와서 정형화된 데이터로 만든다. 그리고 데이터중 주요 도시를 추출하여 그래프를 그리면 된다. 이렇게 작은 문제들을 해결하다 보면 큰 문제인 기상청 웹 사이트의 데이터로 그래프를 그린다는 큰 문제를 해결할 수 있다.

 

1.1.3 컴퓨테이셔널 씽킹

위 사례들처럼 일상생활의 문제점에서 해결책을 찾는 과학적 사고법을 컴퓨테이셔널 씽킹 이라고 하고, 이렇게 설계한 해결책을 컴퓨터 명령어로 작성하는것을 컴퓨터 프로그래밍이라고 한다. 작은 문제로 분해하고, 문제의 패턴을 발견하고, 어떤 데이터를 이용해야 하는지 결정하고, 문제를 일반화하고 모델링할 수 있는지를 찾는 과정이다.

 

1.2 알고리즘과 코딩

 

1.2.1 압축 알고리즘

사진은 보통 jpg 확장자로 저장되는데, 이것이 압축 알고리즘을 구현한 포멧이다. 사진을 그대로 저장하면 용량이 너무 크기 때문에 압축하여 저장하면 더 많은 양의 사진을 저장할 수 있다. 

"aaaabbbcccccddd" 라는 문자열이 있는데, 이 문자열은 같은 문자들이 반복된다는 패턴을 갖고있다. a는 4번, b는 3번, c는 5번, d는 3번 반복되고 있다. 이 문자는 이와 같이 표현할 수 있다. "a4b3c5d3" 이는 컴퓨터에서 쓰였던 압축 알고리즘이다. 이 방식은 Run-Length Encoding 이라고 하며, PCX그림파일 압축에 쓰였다.

 

1.2.2 문제의 패턴 발견과 해결 절차

문제에서 일정한 패턴을 발견하고, 패턴을 토대로 문제를 해결하는 절차를 알고리즘이라고 하며, 알고리즘을 코드로 표현하는 행위를 코딩 이라고 한다. 

 

1.3 파이썬

파이썬은 네덜란드의 귀도 반 로섬이 개발한 프로그래밍 언어이다. 

문법이 쉽고 간단하며, 다양한 패키지가 제공되어 생산성이 높고, 유지보수 비용이 적게들며, 오픈소스라 무료로 제공되고, 객체지향 언어라는 특징이 있다.

 

Unit 2. 파이썬 설치하기

사용중인 컴퓨터 (macOS) 에 Python 3.9.1 버전을 설치하였고, 개발환경은 vscode를 사용할 예정이다.

 

Unit 3. Hello, world! 출력해보기

3.1 IDLE에서 Hello, World! 출력해보기

print('Hello World')

위와 같은 방식으로 Hello World 라는 문자열을 출력할 수 있다. print( ) 안에 출력하고 싶은 문자열을 넣으면 된다.

위 사진은 파이썬 셸에서 코드를 실행한 것이다. 위처럼 코드를 한 줄 한 줄 실행하여 결과를 얻는 방식을 인터프리터 방식이라고 한다.

 

3.2 IDLE 에서 소스파일 실행하기

파이썬 개발환경을 vscode로 사용할 것이기 때문에 vscode에서 소스파일 실행하는 법으로 대신하겠다.

EXTENSIONS 에서 python과 Code Runner를 설치한다.

 

Code Runner 을 설치하면 우측 상단에 아래와 같은 재생 버튼이 생긴다.

.py 확장자를 가진 파이썬 파일에 코드를 적고 재생버튼을 누르면 소스 파일을 실행할 수 있다.

파이썬 코드를 저장한 .py 파일을 파이썬 스크립트라고 한다.

 

3.3 명령 프롬프트에서 Hello World 출력하기

3.3.1 명령 프롬프트에서 파이썬 사용하기

위 사진과 같이 명령 프롬프트에서 python3를 입력하여 파이썬 셸을 실행할 수 있다.

명령 프롬프트에서 파이썬 셸을 끝낼면 exit()를 입력하거나 윈도우의 경우 CTRL + Z, 리눅스와 macOS의 경우 CTRL + D를 누르면 셸을 종료할 수 있다.

 

3.3.2 명령 프롬프트에서 스크립트 파일 실행하기

위 사진과 같이 # python3 스크립트파일.py 의 형식으로 실행할 수 있다.

리눅스와 macOS의 경우 앞에 python3를 붙이지 않고 .py 파일을 그대로 실행할 수 있다.

위와 같이 파일을 저장하고 아래와 같이 명령어를 입력한다.

chmod +x 로 실행권한을 준 후에, 스크립트 파일을 실행하면 된다. 

파일 첫 줄의 #!/usr/bin/python3 는 셔뱅 이라고 한다. 셔뱅은 현재 파일을 실행해 줄 프로그램을 지정할 때 사용한다. 그래서 셔뱅에 파이썬 경로가 지정되어 있기 때문에 파이썬으로 해당 스크립트 파일을 실행한다.

 

3.4 소스코드 살펴보기

print('hello world')

이 코드의 실행 결과만 보더라도 print가 hello world를 출력한다는 것을 알 수 있다. ' '(작은따옴표)로 묶은 부분을 문자열 이라고 하고, print는 값을 화면에 출력해준다. 

print() 처럼 단어 뒤에 괄호가 붙은 것을 함수라 하며 정해진 일을 수행하는 단위이다. 함수 실행을 다른 말로 함수를 호출한다고도 한다.

 

3.5 심사 사이트 사용하기

코딩도장 사이트에서 회원가입을 하고, 강좌 등록을 하면 해당 강좌의 퀴즈를 풀 수 있다. 채점이 완료되면 답안과 문제의 해설이 출력된다.

 

3.6 퀴즈

위 문제의 답은 d 선지 이다.

위 문제의 답은 python3 dojang.py 이다.

 

3.7 연습문제: 문자열 출력하기

다음 소스 코드를 완성하여 'Hello, world!' 'Python Programming' 각 줄에 출력되게 만드시오.

문제의 답은 아래 코드와 같다.

print('Hello, world!')
print('Python Programing')

 

3.8 심사문제: 문자열 출력하기

'Hello, world!' 두 개를 각 줄에 출력하는 프로그램을 만드세요. 

문제의 답은 아래 코드와 같다.

print('Hello, world!')
print('Hello, world!')

개행문자를 사용하여 아래와 같이 한 줄의 코드로도 표현할 수 있다. \n은 줄을 바꾸는 개행문자이다.

print('Hello, world!\nHello, world!')

 

Unit 4. 기본 문법 알아보기

4.1 세미클론

많은 프로그래밍 언어들은 구문이 끝날때 세미클론(;)을 붙여야 하지만 파이썬은 붙이지 않아도 된다. 

그러나 아래와 같이 여러 구문을 한 줄에 표현할 때 세미클론을 활용할 수 있다.

print('hello'); print('world')

 

4.2 주석

주석은 파이썬 인터프리터가 처리하지 않아 프로그램의 실행에는 영향을 주지 않는다.

주석을 활용하여 코드에 대한 자세한 설명을 적거나, 특정 코드를 임시적으로 사용하지 않을 때 활용할 수 있다.

 

4.2.1 한줄주석

다음과 같이 한 줄 주석으로 코드에 대한 설명을 붙일 수 있다.

# hello world 출력
print('hello world)

다음과 같이 코드 앞에 주석을 의미하는 #을 붙이면 코드는 주석이 되어 프로그램에서 실행하지 않는다.

# print('hello world')

다음과 같이 코드 뒤에 주석을 쓰게 되면 주석 앞에 있는 코드만 실행하게 된다.

add = 1+2 # 더하기
print('hello world') # hello world 출력

 

4.2.2 블록 주석

블록 주석은 각 줄의 맨 앞마다 #을 넣어주고, 읽기 편하도록 # 뒤에 한 칸씩 띄어 써준다.

# 더하기
# add = 1+1
# 출력
# print(add)

여러 줄 주석을 사용할 때는 다음과 같은 방식으로도 사용할 수 있다.

'''
더하기
add = 1+1
출력
print(add)
'''

파이썬의 기본 인코딩 방식은 utf-8 이지만, utf-8이 아닐경우 한글이 스크립트 파일 안에 들어가면 실행 시 에러가 발생할 수 있다.

 

4.3 들여쓰기

들여쓰기는 코드를 읽기 쉽도록 일정한 간격을 띄워 작성하는 방법이며, 파이썬에서는 들여쓰기 자체가 문법이기 때문에 다음 if문 같은 경우 항상 들여쓰기를 해야한다.

if a==10:
	print('a는 10이다')

들여쓰기 방법은 공백 2칸, 4칸, 탭 등이 있다. 파이썬 코딩 스타일 가이드(PEP 8)에 따르면 공백 4칸으로 규정하고 있다.

 

4.4 코드블록

코드 블록은 특정한 동작을 위해 코드가 모여있는 상태를 의미한다. 들여쓰기를 기준으로 코드블록을 구분하며 같은 블록은 들여쓰기 칸 수가 같아야하며, 공백과 탭을 섞어서 사용하면 안된다.

if(a==10):
    print('a는 10입니다')
    print('여기까지 같은 블록')

 

Unit 5. 숫자 계산하기

파이썬에서 숫자의 자료형은 정수, 실수, 복소수로 구분한다. 프로그래밍에서는 주로 정수와 실수를 사용하며 복소수는 공학 분야에서 주로 쓰인다. 

 

5.1 정수 계산하기

5.1.1 사칙연산

파이썬 프롬프트에서 다음과 같이 사칙 연산이 가능하다.

나눗셈 부분을 보면 5/2 가 2.5 가 나왔다. 내가 사용한 파이썬 버전이 3이라서 그런것인데 파이썬2 에서는 2가 나온다. 파이썬2 에서는 정수 끼리의 나눗셈은 정수가 나오도록 되어 있고, 파이선 3는 정수끼리 나눗셈을 해도 실수가 나오도록 되어있기 때문이다. 실제로 4/2 를 확인해보면 2가 아닌 2.0이 나온다.

 

5.1.2 나눗셈 후 소수점 이하를 버리는 // 연산자

다음과 같이 // 연산자를 사용하게 되면 나눗셈의 결과가 정수로 나온다.

//은 버림 나눗셈(floor division) 이라고 부르며 나눗셈 결과에서 소숫점 이하는 버린다.

다음과 같이 실수에 // 연산자를 사용하면 결과는 실수가 나오며 항상 .0으로 끝난다.

 

5.1.3 나눗셈 후 나머지를 구하는 % 연산자

% 연산자는 나눗셈이 나누어 떨어지지 않을 때 나머지만을 구하는 연산자이다. 모듈로(modulo) 연산자라고 부른다.

5.1.4 거듭제곱을 구하는 ** 연산자

다음과 같이 ** 연산자를 활용하여 거듭제곱을 구할 수 있다.

 

5.1.5 값을 정수로 만들기

int()에 숫자, 계산식을 넣으면 값을 강제로 정수로 만들 수 있다. 정수로 된 문자열도 가능하다. 실수를 넣었을 경우 소숫점 이하는 버린다. int는 정수(integer)을 의미한다.

3번째 예시처럼 숫자를 ' '나 " " 가 감싸고 있으면 문자열이다. 

 

5.1.6 객체의 자료형 알아내기

type(값)

위와 같은 형태로 객체의 자료형을 알아낼 수 있다. 

결과값을 보면 <class 'int'> 라고 나와있는데 정수(int)클래스 라는 뜻이다. 파이썬에서는 숫자도 객체(Object)이며, 객체는 클래스(class)로 표현된다.

 

5.1.7 몫과 나머지를 함께 구하기

몫과 나머지를 함께 구하려면 divmod()를 사용할 수 있다.

결과값은 위와 같이 (몫, 나머지) 의 형태로 나온다. 파이썬에서 값을 괄호로 묶은 형태를 튜플(tuple) 이라고 한다. 튜플은 아래와 같이 변수 여러개에 저장 할 수 있다. 

 

5.1.8 2진수, 8진수, 16진수

정수는 10진수 외에도 2진수, 8진수, 16진수로 표현할 수 있다

  • 2진수 : 숫자 앞에 0b 를 붙이며 0과 1을 사용한다.
  • 8진수 : 숫자 앞에 0o를 붙이며 0~7까지 사용한다.
  • 16진수 : 숫자 앞에 0x를 붙이며 0~9, A ~ F 까지 사용한다.

 

5.2 실수 계산하기

소숫점이 붙은 수들을 실수라고 한다. 아래와 같이 실수끼리의 사칙연산도 가능하다.

결과값 중에 뺄셈 부분에서 이상한 값이 나왔다. 컴퓨터는 실수를 표현할 때 오차가 발생한다. 더 자세히 알고 싶어서 부록 47.7을 확인해 봤다.

파이썬은 실수를 부동 소수점 방식으로 표현한다고 한다. 고정 소수점 방식은 표현 범위가 매우 작다는 단점이 있어서 부동 소수점 방식을 사용하는 것 같다. 실수는 무한히 많지만, 컴퓨터에서는 숫자를 비트로 표현하기 때문에 실수는 유한개의 비트로 정확하게 표현할 수 없어 유한개의 비트를 이용해서 근삿값으로 표현한다고 한다. 

 

5.2.1 실수와 정수를 함께 계산하면?

위와 같이 실수와 정수를 함께 계산하면 값은 실수로 나온다. 실수와 정수를 함께 계산하면 표현 범위가 넓은 실수로 계산된다.

 

5.2.2 값을 실수로 만들기

float() 괄호 안에 숫자, 계산식, 실수 또는 정수로 된 문자열을 넣으면 값을 강제로 실수로 변환할 수 있다.

float는 부동소수점(floating point)에서 따온 것으로 실수의 자료형을 확인해보면 <class 'float'>가 나온다.

 

5.2.3 복소수 

파이썬에서는 실수부와 허수부로 이루어진 복소수도 사용할 수 있다. 허수부는 숫자 뒤에 j 를 붙인다.

두 실수를 복소수로 만들때는 complex()를 사용한다.

 

5.3 괄호 사용하기

파이썬은 수학과 동일하게 곱셈과 나눗셈의 연산 우선 순위가 높다. 덧셈, 뺄셈, 곱셈, 나눗셈이 함께 있는 연산식에서 덧셈과 뺄셈을 먼저 계산하고 싶다면 괄호( )를 사용해야 한다.

 

5.4 퀴즈

파이썬3 버전이기 때문에 정답은 d 이다.

정답은 c 이다.

정답은 17이다.

 

5.5 연습문제 : 아파트에서 소음이 가장 심한 층수 출력하기

답은 아래 코드와 같다.

print(int(0.2467*12+4.159))

위 코드를 실행하면 결과값이 7로 나온다. 문제 조건에서 소수점 이하 자리는 버린다고 했기 때문에 int()함수를 사용하였다.

 

5.6 심사문제 : 스킬 공격력 출력하기

답은 아래 코드와 같다.

print(102 * 0.6 + 225)

 

Unit 6. 변수와 입력 사용하기

6.1 변수 만들기

파이썬에서는 "변수이름 = 값" 의 형식으로 변수를 생성하고 값을 저장한다. 변수 이름은 다음의 규칙을 지키면 원하는대로 지을 수 있다.

  • 영문 문자와 숫자를 사용한다 .
  • 대소문자를 구분한다.
  • 문자부터 시작해야 하며, 숫자로는 시작하면 안된다.
  • _(밑줄문자)로 시작할 수 있다. 
  • 특수문자는 사용할 수 없다.
  • 파이썬의 키워드(if, for, while등)는 사용할 수 없다.

변수에는 숫자와 문자를 저장할 수 있다.

 

6.1.1 변수의 자료형 알아내기

type() 괄호에 변수를 넣으면 변수의 자료형을 알아낼 수 있다. 

str은 문자열(string)에서 따온 것이다. 변수의 자료형은 변수에 들어가는 값에 따라 달라짐을 알 수 있다.

 

6.1.2 변수 여러개를 한 번에 만들기

파이썬에서는 "변수이름1, 변수이름2, 변수이름3 = 값1, 값2, 값3"의 형태로 변수 여러개를 한 번에 만들 수 있다. 나열된 순서대로 값이 할당되며, 변수와 값의 개수가 맞지 않을 경우 에러가 발생한다.

변수 여러개를 만들 때 값이 모두 같아도 된다면 다음과 같이 만들 수 도 있다.

변수1, 변수2 = 변수2, 변수1 의 형식으로 두 변수의 값을 바꿀수도 있다.

 

6.1.3 변수 삭제하기

변수는 del 키워드를 이용하여 삭제할 수 있다.

x라는 변수가 삭제되었기 때문에 x 는 정의 되지 않았다는 에러 메시지를 확인할 수 있다.

 

6.1.4 빈 변수 만들기

파이썬에서는 None을 할당하여 빈 변수를 만들 수 있다. None은 아무것도 없는 상태를 표현하는 자료형이다.

자료형이라는 설명이 있었기에 type()으로 확인해보니 다음과 같은 결과가 나왔다. NoneType라는 자료형이였다.

 

6.2 변수로 계산하기

변수는 변수끼리 계산할 수 있고, 계산한 결과를 다른 변수에 저장할 수 있다.

 

6.2.1 산술 연산 후 할당 연산자 사용하기

위 결과를 보면 a 에 20을 더했지만 계산 결과를 유지하지는 않는다. 계산 결과를 유지하려면 아래와 같이 계산 결과를 다시 변수에 저장해야한다. 

아래와 같이 할당 연산자를 사용해도 동일한 결과가 나온다.

위와 같이 산술연산자 옆에 할당연산자(=)를 붙이면 연산 결과를 변수에 저장한다.  a+=10은 a = a + 10을 축약한 형태인 것이다. 덧셈 뿐 아니라 뺄셈, 나눗셈, 곱셈, 나머지, 몫 연산도 모두 사용 가능하다.

위와 같이 할당연산자는 만들지 않은 변수에 사용하면 에러를 발생한다. 

 

6.2.2 부호 붙이기

수학과 동일하게 양수에 - 부호를 붙이면 음수가 되고, 음수에 - 부호를 붙이면 양수가 되며, 음수에 +부호를 붙이면 변화가 없다.

 

6.3 입력값을 변수에 저장하기

6.3.1 input 함수 사용하기

매번 다른 값을 변수에 할당하거나 프로그램 사용자로 부터 값을 입력 받을 때는 input 함수를 사용할 수 있다. 

input()을 입력한 후 엔터를 누르면 다음줄로 넘아간다. 그 줄에 문자열을 입력하고 엔터를 누르면 입력한 문자열이 출력된다. 

input함수는 사용자가 입력한 값을 가져오는 함수이다.

 

6.3.2 input 함수의 결과를 변수에 할당하기

아래 코드와 같이 input함수의 결과를 변수에 할당할 수 있다.

변수 = input()

변수에 입력한 문자열이 저장되고, 변수를 출력하면 입력한 값이 나온다. 하지만 위와 같은 상태에서는 함수가 실행된 다음 아무 내용이 없어서 입력을 받는 상태인지, 출력이 없는 상태인지 확인하는데 어려움이 있다. 그래서 input() 괄호안에 안내문구처럼 문자열을 넣어줄 수 있다.

사용자에게 입력받는 값의 용도를 미리 알려줄때 사용된다. 이 문자열은 프롬프트(prompt)라고도 부른다.

 

6.3.3 두 숫자의 합 구하기

아래 코드는 두 숫자를 입력받은 후, 입력받은 두 숫자의 합을 구하는 코드이다.

n1 = input('숫자 입력 1 : ')
n2 = input('숫자 입력 2 : ')

print(n1 + n2)

코드를 실행해보면 아래와 같은 결과가 나온다.

아래와 같이 input()으로 입력받은 수의 자료형을 확인해보면 str(문자열) 인것을 확인할 수 있다. input() 함수로 입력받은 값들은 자료형이 문자열이다. 

 

6.3.4 입력값을 정수로 변환하기

10 + 20의 값이 30이 나오게 하려면 아래 코드와 같이 int()함수를 사용해서 문자열을 정수로 바꿔줘야 한다.

n1 = int(input('숫자 입력 1 : '))
n2 = int(input('숫자 입력 2 : '))

print(n1 + n2)

int() 함수는 정수로 된 문자열도 정수로 변환할 수 있기 때문에 입력받은 문자열 10 과 20이 정수 10과 20으로 변환된 것이다. 

 

6.4 입력값을 변수 두 개에 저장하기 

아래와 같이 split을 사용하여 한번에 값을 여러개 입력받고, 저장할 수 있다.

변수1, 변수2 = input().split()
변수1, 변수2 = input().split('기준문자열')
변수1, 변수2 = input('문자열').split()
변수1, 변수2 = input('문자열').split('기준문자열')
n1, n2 = input('문자열 두 개 입력 : ').split() # 입력받은 값을 공백을 기준으로 분리

print(n1)
print(n2)

input에 split을 사용하면 입력받은 값을 공백을 기준으로 분리하여 선언된 변수에 순서대로 저장한다.  

 

6.4.1 두 숫자의 합 구하기

n1, n2 = input('숫자 두 개 입력 : ').split()

print(n1+n2)

위 코드의 경우에도 input로 숫자를 입력 받았기 때문에 n1 과 n2 모두 문자열 자료형이 되어 결과값으로 1020이 출력된다. 

 

6.4.2 입력값을 정수로 변환하기

10 + 20의 결과값이 30이 나오려면 n1과 n2를 정수형으로 변환해줘야 한다.

n1, n2 = input('숫자 두 개 입력 : ').split()
n1 = int(n1)
n2 = int(n2)

print(n1+n2)

또한 아래 코드와 같이 print()함수 안에서 int형으로 변환하여 더해줘도 된다.

print(int(n1)+int(n2))

 

6.4.3 map을 사용하여 정수로 변환하기

map 을 활용하면 한 줄로 정수로 변환이 가능하다. map()에 int, input(), split()을 넣으면 split의 결과를 모두 int로 변환해준다. 

n1, n2 = map(int, input('숫자 두 개 입력 : ').split())

print(n1+n2)

6.4.4 입력받은 값을 콤마를 기준으로 분리하기

split()에 기준 문자열을 지정하면 공백이 아니라 다른 문자를 기준으로 분리하는 것이 가능하다. 아래와 같이 기준 문자열로 ,(쉼표)를 지정하면 쉼표를 기준으로 입력값이 분리된다. 

n1, n2 = map(int, input('숫자 두 개 입력 : ').split(','))

print(n1+n2)

 

6.5 퀴즈

정답은 c 이다.

정답은 a,c,e,g,h 이다.

정답은 b,c 이다.

정답은 d 이다.

 

6.6 연습문제 : 정수 3개을 입력받고, 합계 출력하기

정답은 다음 코드와 같다.

a, b, c = map(int, input().split())

 

6.7 심사문제 : 변수 만들기

정답은 다음 코드와 같다.

a = 50
b = 100
c = None

 

6.8 심사문제 : 평균 점수 구하기

정답은 다음 코드와 같다.

kor, eng, math, sci = map(int, input().split())
avg = (kor + eng + math + sci) / 4
print(int(avg))

문제 조건에 평균을 출력할 때 소수점 이하는 버리라고 했기 때문에 출력할 때 int()함수를 사용하였다.

+ Recent posts