본문 바로가기

Python 독학/python 기본

The Basics of Python Chapter03 연습 문제

23. 09. 09 

중간중간 틀린 것이나, 헷갈리는 것, 알아둬야할 만한 것들만 기록 해두겠다

 

 


다음 코드를 실행한 후, 2018과 "2018"을 입력했을 경우 알맞은 실행결과는?

admission_year=input("입학 연도를 입력하세요: ")
print(type(admission_year))

>>> <class 'str'>, <class 'str'>

 

#파이썬에서 input 은 사용자로부터 입력받은 값을 문자열(str) 형태로 반환한다. 


다음 코드의 결과값은?

 

a = [3, 2, 1, 4]
b = a.sort()
print(a, b)

>>> [1,2,3,4] none

 

여기서 유념해야할 점은 sort() 이다. 파이썬에서 sort() 함수는 리스트를 정렬하는 기능을 수행한다. 이 때, sort() 함수는 원본 리스트 자체를 변경하고, 반환 값은 없다. 이런 종류의 함수를 우리는 'in-place' 함수라고 부른다. 'in-place' 라는 말은 "원래 위치에서" 라는 뜻으로, 원본 데이터 자체를 변경하며 별도로 새로운 데이터를 만들지 않는다.

 

따라서 .sort() 메소드가 원본 리스트에 대한 정렬 작업을 수행한 후에는 특정 값을 반환하지 않기 때문에 (즉 '결과'가 없기 때문에), 파이썬은 이 상황을 표현하기 위해 '아무 것도 없음'을 의미하는 특수한 값인 None을 사용한다.


country=["Korea", "Japan", "China"]
capital=["Seoul","Tokyo", "Beijing"]
index=[1,2,3]

country.append(capital)
#country=["Korea", "Japan", "China", ["Seoul","Tokyo","Beijing"]]
country[3][1]=index[1:]
# "Tokyo"= 2, 3 ?? country=["Korea", "Japan", "China", ["Seoul", [2, 3],"Beijing"]]
print(country)

>>>['Korea', 'Japan', 'China', ['Seoul', [2, 3], 'Beijing']]

일단 

country[3][1]= index[1:] 은

country[3][1]의 값을 index[1:] 로 바꾸라는 뜻이다.

그리고 index[1:] 처럼 리스트 값을 반환할때, 리스트형태로 반환한다는걸 간과하지말자

 


a=1
b=1
print(a is b)
a=300
b=300
print(a is b)

>>>true

>>>false

 

일단... 명령프롬프트에서 실행한 파이썬, 그리고 파이썬의 이론적으론,, ture, false가 나오고 그 이유는 

파이썬에서는 -5부터 256까지의 정수는 미리 할당되어 있고, 이 범위 내의 숫자들은 동일한 객체를 참조한다. 따라서 a=1과 b=1에서 a와 b는 같은 객체를 참조하므로 a is b는 True를 반환한다.
반면에, 256을 초과하는 정수(예: 300)에 대해서는 각각 별도의 객체가 생성된다. 따라서 a=300과 b=300에서 a와 b는 값은 같지만 서로 다른 객체를 참조하므로 a is b는 False를 반환한다.

 

# is 는 메모리의 주소를 비교하는 연산이고, ==은 단순 값만 비교하는 연산임을 기억하자