인프라 & 클라우드 & 코딩 이야기/너도 할 수 있어 파이썬

[Python] input( ) & 형 변환 &map( )(모든 문제)

인생여러방 2023. 3. 5. 01:54
728x90
반응형

input( )

Python에서 값을 입력받기 위해 input( ) 사용한다.

1) 숫자, 철자, 단어, 문장 모든 것을 input( )으로 받을 수 있다.

1-1) 정확히는 문장(문자열)을(만) 받는다.
ex) input( )으로 받은 숫자 1은 숫자 1이 아닌 "1"이라는 문자(열)이다.
      input( )으로 받은 숫자 1 3은 숫자 1과 3이 아닌 "1 3"이라는 문자열이다.

input( )의 경우 입력을 받고 문자열 형태로 건내주는 함수이다.
따라서 input( )으로 입력 받은 값을 저장할 공간을 지정해주거나 사용될 다른 함수에 위치를 해줘야한다.

 

1-2) 입력받은 값을 특정 공간에 저장해주는 방법(할당)
value_1 = input()
print(value_1)

실행 결과

input() 함수로 "커서가 깜박일텐데, 값을 넣고 엔터를 치면 됩니다." 라는 값을 받았고, 이 값을 value_1이라는 변수에 저장을 했다. 그리고 이 value_1 값을 출력을 했다.

*변수란, 값들을 저장하는 공간이다. 다른 컴퓨터 언어의 경우 int a, char b.. 등 변수의 타입을 지정해주며 변수 선언 이라는 과정이 "선행"되어야 하지만, python의 경우 변수 선언 필요 없이 바로 "할당(ex. a = 3, b = "할당임", c = input())"을 진행하면 된다.

선언과 할당 그림 추가 설명

=> python은 변수가 데이터를 직접 다루지 않고, 인스턴스 포인터를 활용한다. 그림이나 설명은 python 구조와 안맞을 수 있으나, 설명하고자 했던 것은 할당 되는 값에 의해 변수 타입이 정해진 다는 것이다.

1-3) 입력받은 값을 변수에 할당하지 않고 바로  사용하는 방법
print(intput()).

실행 결과

728x90

1-4) input()으로 받은 값을 문자열이 아닌 숫자로 사용하는 방법(형 변환)
연산(+,-,/,x ..)은 숫자끼리 하는 것으로 문자(열)에서는 할 수가 없다.
num_1 = input()
num_2 = input()
print(num_1+num_2)

실행 결과

 

4가 아닌 13이 나온 이유는 num_1에 숫자 1이 아닌 문자열 "1"이 할당 되고, num_2에 숫자 2가 아닌 문자열 "2"가 할당되고, num_1+num_2 과정을 통해 숫자 1과 숫자 3을 더한 것이 아닌 "1"과 "3"을 하나의 문자열로 합쳐서 "13"이 된 것이다.

 

 

연산을 하기 위해서는(입력 값을 숫자로 활용하기 위해서는)
num_1 = int(input())
num_2 = int(input())
print(num_1+num_2)
혹은
num_1 = input()
num_2 = input()
print(int(num_1)+int(num_2))
와 같이 int(  ) 겉에 씌워줘야한다.
int( )의 경우 input( )으로 입력 받은 값을 숫자 형태로 바꾸어 num_1, num_2에 저장하는 것이다. 입력된 값이 각각 1과 3일 때, num_1, num_2에는 이제 숫자 1과 3이 들어가게 된다. 그래서 num_1+num_2를 하게 되면 4가 나오게 된다.
int( )의 경우 문자열인 num_1과 num_2를 int( )로 씌운 순간만 숫자 형태로 바꿔주는 것이다. num_1과 num_2에는 각각 문자열 "1"과 "3"이 들어가겠지만 int(num_1)+int(num_2) 이 순간에는 숫자 1과 숫자 3의 +가 되어 4가 나오게 된다.

위의 두 코드 실행 결과

=> input( )을 사용하여 값을 입력하기 위해서는 끝에 enter를 쳐야되기 때문에, 그대로 사용하면 한 줄에 한 값 밖에 입력할 수 밖에 없다.

한 줄에 여러 값을 입력받고자 한다면 추가적인 작업이 필요하다. 

반응형

2) 한 줄에 여러 문자열을 받기 위해서는 split()함수를 활용할 수 있다.

2-1) split( )은 문자열 나눠서 리스트에 담는 기능을 한다.
리스트 정리 : 링크 추후 첨부

 

2-2) split('구분자') 이와 같이 구분자를 정해주면 구분자를 기준으로 분리하고, 아무것도 없으면 공백을 기준으로 분리한다.
사용은 문자열.split('구분자')  형태로 사용한다.
ex) a = "1990_04_25"
      b = "1990 04 25"
      print(a.split('_'))
      print(b.split())

*리스트의 포함된 값을 각 변수에 할당 할 수 있다.
ex) a, b, c = ["abc", "def", "hij"]
      n, u, m = [1, 2, 3]
      print(f"{a}와 {b}와 {c}, 문자열을 합치면 {a+b+c}"")
      print(f"{n}와 {u}와 {m}의 합은 {n+u+m}")

list안의 값의 개수와 변수의 개수는 일치해야 한다.

2-3) split( )함수를 활용하여 한 줄에 여러 문자열 받는 방법
words = input()
a, b, c = input().split()
print(f"input을 안하면 {words} 와 같습니다.")
print(f"a 값 {a}, b 값 {b}, c 값 {c}")

변수는 a,b,c 3개를 지정했기 때문에, input( ).split( )을 통해서 input( )으로 받고 공백을 기준으로 나뉘어져 list에 담긴 값의 개수가 3개여야 한다. 따라서 하나 둘을 하게 되면 ["하나", "둘" ] 이렇게 값이 2개이기 때문에 에러가 발생한다.

3) 한 줄에 여러 숫자를 입력 받기 위해서는 split( )함수와 map( )함수를 사용해야 한다.

3-1) int(input( ).split( ))는 허용되지 않는 문법이다.
int( ) 를 통해서 문자열을 숫자로 바꿀 수는 있지만(문자가 숫자일 경우), 리스트 자체를 숫자로 바꿀 수는 없다.

3-2) map(자료형 타입, 리스트)
int(input( ).split( ))으로 하려는 것을 map( )을 통해서 할 수 있다.
원하는 자료형 타입은 int(숫자)이고, 리스트는 input().split()이다.
map(int, input().split())을 하게 되면 map object가 생성된다. (map object 란.. 일단 넘어가기..)
map object를 그대로 사용할 수 없고 변수에 할당해서 사용하거나, list로 구성해서 사용한다.
a, b = map(int, input().split())
list_a = list(map(int, input().split()))  <<-- 리스트 부분 참고
위와 같이 사용하면 된다.
ex) a, b = map(int, input().split())
     print(a+b)

 

3-3) map( ) 사용하지 않고 숫자로 활용하는 방법
ex) a, b = input().split()
      print(int(a)+int(b))

https://multitasker-sh.tistory.com/4

 

[Python] 문자열 (str) & len() (모든 문제)

문자열 1) 문자열에 문자 접근 문자열은 문자들이 열을 이루고 있는 것으로 문자열에 속해 있는 특정 문자에 접근하기 위해서는 위치를 지정해줘야한다. 우선 "Hello world!" 라는 문자열은 와 같이

multitasker-sh.tistory.com

 

728x90
반응형