Python 독학/python 기본

The Basics of Python Chapter03 연습 문제

민백월 2023. 9. 10. 00:48

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 는 메모리의 주소를 비교하는 연산이고, ==은 단순 값만 비교하는 연산임을 기억하자