[03주차] 할당(==대입 or 지정), input( ), print( )

Sung-E-Gkoght·2022년 11월 30일
0

HYAI - Python class

목록 보기
15/17
post-thumbnail

0. 서론

원래는 자료형을 이전에 따로 했어야 하지만 학회가 중간고사 이후로 시작을 한 이유로 학기가 끝날 때까지 제 시간을 맞추지 못할 것 같아서 잠시 뺐다가, 꼭 넣어야 할 것 같아서 상대적으로 양이 적은 03주차에 내용을 넣게 되었습니다.

이전에도 간간히 나왔지만 하나의 자료로 구성하는 게 더 좋다고 생각했습니다.


1. assignment: 할당(대입)

"할당"이라는 말이 일상적으로 쓰는 말은 아닌데, 쉽게 생각하면 여기서는 "대입"과 비슷합니다.

변수에 값을 할당(지정)한다.

Numeric types에서 한 번 할당을 소개한 적이 있었는데요, "="를 사용해서 표현했습니다.

변수라는 건 "(메모리에) 값을 저장하는 공간"입니다.

변수란 값을 저장하는 공간이다.

"="은 값을 할당합니다.

변수 = 식

"="의 우측에 있는 식을 먼저 계산하여 나온 값을 변수에다가 할당(대입)합니다.

a = 'a'			# a == 'a'
b = '7' + ' 5' 	# b == '7 5'
x = 1 + 2		# x == 3
y = 2			# y == 2

2. 동시에 할당(+ 값의 교환)

Python은 할당을 동시에 할 수 있습니다. 더하여, Python 3는 Sequence의 원소를 동시 할당으로 다른 변수에 할당 가능합니다.

변수에 값을 차례대로 할당했습니다.

x = 1
y = 2

위와 같다고 할 수 있습니다.
이 동시 할당이 유용한 점은 두 변수의 값을 교환하는 경우입니다.


만약 아래와 같이 한다면 어떤 문제가 발생할까요?

x = y
y = x

x = y	# x의 값이 1에서 y(의 값)로 이미 바뀜
y = x	# 원래 생각하던 x의 값이 아니라 y(의 값)기 y에 할당

새로운 x, y에 기존의 x,y의 값을 대입해주어야 하는데, 기존의 x값( 1 )은 이미 사라져버린 상태입니다.
이 때문에 y에는 x값을, x에는 y값을 서로 할당해주는 방법은 더미 변수를 만드는 것입니다.

t = x
x = y
y = t

기존의 x값을 변수 t에 미리 따로 저장(할당)하고, x에는 y의 값을, y에는 t(== 기존의 x값)를 할당해주면 값이 완벽히 교환된 것을 알 수 있습니다.

위의 방법은 많은 프로그래밍 언어에서 동작합니다. (더미라고 할 수 있는) 새로운 변수를 하나 만드는 것은 어느 언어에서나 가능하기 때문입니다.

다만 Python에는 동시 할당을 이용해서 값을 교환할 수도 있습니다.

x = 1
y = 2

x,y = y,x

잘 작동합니다.


+
sequence의 값도 할당이 가능합니다. 보통 리스트나 튜플처럼 명시적인 원소를 변수에 저장할 때 사용합니다.

t, u, v = [1, 2, 3]

x, y, z = (4, 5, 6)		# 여기서 t,u,v와 x,y,z는 tuple로 인정받지 않습니다. 

원래는 list에 list, tuple에 tuple로 하는 것이 맞겠지만, Python은 이렇게만 해도 할당이 가능합니다. 주의해야 할 것은 길이가 다르면 안됩니다.

u, v = [1, 2, 3]
w, x, y, z = (4, 5, 6)

이런 이유로 길이가 명확하고 짧은 게 아니라면 자주 사용할 수 있을 지는 의문입니다. 대신 Sequence는 "반복문"에서 더 편리하게 다룰 수 있습니다.

3. input( )함수와 print( )함수

키보드 입력과 모니터 출력을 담당하는 내장함수(built-in function)입니다. 내장함수라는 말은 Python이 이 함수를 알고 있어서 따로 작성하거나 외부에서 가져오지 않아도 문제없이 동작합니다.

원래는 함수 파트에서 설명할 생각이었지만, 매우 기본적인 함수이기도 하고 연습문제를 풀 때 알아야 할 점이 있기 때문입니다.

그리고 함수의 설명은 원래 Python document에서 보는 것이 맞지만, IDLE에서도 간단히 볼 수 있어서 IDLE를 활용했습니다.

3.1 - Input( )

Input( ) 함수는 사용자의 키보드 입력을 받습니다. 그리고 입력 받는 데이터를 문자열(string)으로 type을 바꿔서 돌려줍니다(return).

설명을 보시면

표준 입력으로부터 문자열을 읽는다. 뒤따라오는 개행문자는 제거한다.

  • 표준입력 == 키보드 입력

  • 뒤따라오는 개행문자: 입력할 때 Enter를 누르는데 이때 개행문자가 함께 전달됩니다. Input( ) 함수는 이 개행문자를 제거하고 입력값을 받는다는 의미입니다.

x = input("Enter what you want")	# 괄호 안의 문자열을 화면에 출력하고 입력을 받습니다.

type(x)								# x의 data type을 확인

괄호 안의 문자열을 출력하고 입력을 받는다

정수 100 입력

x에 저장된 값의 data type을 확인해보았더니 문자열이다. 

입력할 때 정수 100을 입력했는데, x에 저장된 값의 data type을 확인해보니 str이라고 나옵니다. 이는 문자열이라는 뜻입니다.

만약 항상 정수를 입력한다고 가정했을 때 어떻게 x에 정수를 저장할 수 있을까요?

이때 형(type)변환을 이용합니다. 타입 변화를 위한 내장함수(built-in function)

x = int(input("What you want"))

type(x)

값이 int type이라는 걸 확인할 수 있습니다.

3.2 - print( )

print( ) 함수는 기본적으로 여러 개의 인자를 출력할 수 있습니다.

  • value, ..., 부분에서 여러 개의 인자를 출력할 수 있다는 걸 의미합니다.

  • sep : 쉼표로 인자들(values)를 구분하는데, 출력할 때 인자 사이를 어떻게 출력할 지 정합니다. 즉, 쉼표를 무엇으로 출력할 지 결정하는 옵션(option)입니다. 기본값(Default)은 공백 한 칸 " " 입니다.

  • end : values 출력을 마치고 맨 끝에 출력할 내용을 결정하는 옵션(option)입니다. 기본 값은 개행문자 \n입니다. 다만 구 버전의 Python과 달리 지금은 end=""(null, 아무 값도 주지 않음)로 설정해도 개행이 한 번은 무조건 됩니다. 물론 그렇게 큰 의미는 없습니다.

print("중요한 것은", "꺾이지 않는 마음")

그런데 두 문자열의 끝과 시작에 공백(" ")이 없었는데 출력의 결과는 이미 띄어쓰기가 적용되어 있습니다. 그리고 사실 여기서 보이지는 않지만 개행도 되어있습니다.

profile
Sung-E-Gkoght

0개의 댓글