Table of Contents

Python

데이터 입력받기 input

꼬꼬마코더 2024. 5. 6. 12:15
728x90


💡 input()

 

💡 input(). split()

1234 입력

 

1 2 3 4 띄어써서 입력

 

💡 map()

1 2 3 4 입력하면 map함수 객체 자체를 뱉어낸다.

 

1 2 3 4 입력하면 map함수 객체 자체를 뱉어낸다.

 

1 2 3 4 띄어써서 입력하면 map함수는 못받아들인다.

map(int, input())은 input()으로 받은 문자열의 각 문자를 int 함수에 전달한다. 그러므로 각 문자는 숫자로 변환되어야 합니다.

"1 2 3 4" 문자열에서 각 문자('1', ' ', '2', ' ', '3', ' ', '4')는 개별적으로 처리된다. 여기서 숫자가 아닌 공백 문자(' ')는 int 함수로 변환할 수 없기 때문에 ValueError가 발생한다.

 

💡 map() 결과를 list로 받기

1 2 3 4 띄어써서 입력

1 2 3 4 띄어써서 입력

1 2 3 띄어쓰기로 입력, a b c에 각자 따로 받기

123 456 789 띄어써서 입력, a b c에 각자 따로 받기, 리스트 결과가 아님

123 만 입력하면 b c에 넣을 데이터가 없어서 에러남

 

💡 sys.stdin.readline()

sys.stdin.read()를 사용하는 것은 표준 입력을 읽기 위한 방법인데, 특정한 상황에서만 적절하게 작동합니다. 일반적인 대화형 인터프리터(Interactive Interpreter)나 스크립트 실행 환경에서는 이 함수가 종료되지 않고 계속 입력을 기다리게 되는 문제가 발생할 수 있습니다. 이 함수는 종료 조건(EOF)이 입력되기 전까지 입력을 계속 기다립니다.

대화형 파이썬 환경(예: Jupyter Notebook, Python 셸)에서는 사용자 입력을 받기 위해 input() 함수를 사용하는 것이 일반적입니다. input()은 사용자가 엔터 키를 누를 때까지 기다리고, 그 때 입력된 내용을 문자열로 반환합니다.




💡 예제를 풀어보자!

다음은 3줄의 입력값이다. 과목, 과목당 학점, 등급이 띄어쓰기로 입력되어 있다.

ObjectOrientedProgramming1 3.0 A+
IntroductiontoComputerEngineering 3.0 A+
ObjectOrientedProgramming2 3.0 A0

 

한 줄씩 리스트에 담아보자.

 

과목, 학점, 등급끼리 리스트에 담아보자.

 

 

💡 예제를 풀어보자!

다음과 같이 입력하면 어떤 결과가 나올까?

 

map함수가 띄어쓰기를 int형으로 만들지 못해 에러를 내뱉는다.

 

다음과 같이 입력하면 어떤 결과가 나올까?

map(int, input())는 입력 받은 문자열의 각 문자를 순회하면서, 각 문자(하나하나)를 int 함수를 통해 정수로 변환한다. 예를 들어, 사용자가 "123"을 입력하면, input()은 "123"이라는 문자열을 반환한다.

이 문자열의 각 문자('1', '2', '3')가 map(int, ...)에 의해 개별적으로 처리되어 각각의 문자가 정수 1, 2, 3으로 변환된다.

이렇게 변환된 정수들은 list() 함수를 통해 리스트 [1, 2, 3]으로 만들어진다.

그렇기 때문에 input() 뒤에 split()을 붙여야 한다.

 

 

다음과 같이 입력받은 데이터를 개행문자(newline, \n)를 기준으로 나누고 싶다면?

\n이 문자열 내에서 \n으로 구성된 일반 문자로 인식될 수 있어서 이러한 상황이 발생한다.