Python - 사용자 입력 값 받기(input)

Python에서 input() 함수를 이용하여 사용자로부터 데이터를 입력받는 다양한 방법을 소개합니다. 가장 기본적인 방법부터, 여러 데이터를 받는 방법을 순차적으로 소개합니다.

1. input() 함수로 1개의 데이터 입력 받기

다음과 같이 input()은 console에서 사용자로부터 데이터를 입력받습니다.

val = input()
print(val)

위의 코드를 실행하면 다음과 같이 출력됩니다. (100을 입력하였고, 100을 출력하였습니다.)

> 100
100

input()의 인자로 문자열을 전달하면 데이터를 입력받을 때 그 문자열을 Console에 출력합니다.

val = input("Enter something: ")
print(val)

Output:

Enter something: 100
100

2. input() 함수로 2개 이상의 데이터 입력 받기 (1)

직관적인 방법으로, 2개 이상의 데이터를 받으려면 input()을 두번 사용하면 됩니다.

num1 = input("Enter integer1: ")
num2 = input("Enter integer2: ")
sum = num1 + num2
print(sum)

숫자를 입력했지만 실제로 리턴되는 타입은 String입니다. 입력 값은 문자열로 리턴되기 때문에, sum은 40이 아닌 문자열의 합 1030이 됩니다. 입력 받은 값을 Integer 또는 Float으로 사용하려면 문자열을 각각의 타입으로 변환해야 합니다.

Output:

Enter integer1: 10
Enter integer2: 30
1030

숫자의 합을 구하고 싶다면, 다음과 같이 문자열을 int로 변환해주면 됩니다.

num1 = input("Enter integer1: ")
num2 = input("Enter integer2: ")
sum = int(num1) + int(num2)
print(sum)

Output:

Enter integer1: 10
Enter integer2: 30
40

만약 입력받는 데이터가 float이라면 float으로 변환해야 합니다.

num1 = input("Enter float1: ")
num2 = input("Enter float2: ")
sum = float(num1) + float(num2)
print(sum)

Output:

Enter float1: 10.2
Enter float2: 22.4
32.599999999999994

3. input() 함수로 2개 이상의 데이터 입력 받기 (2)

input()을 한번만 사용하고 여러 데이터를 받는 방법도 있습니다.

다음과 같이 구현하면 두개의 데이터를 받을 수 있습니다.

v1, v2 = input("Enter two value: ").split()
v1, v2 = [int(v1), int(v2)]
sum = v1 + v2

print("v1: {}, v2: {}".format(v1, v2))
print("sum: {}".format(sum))

split()을 사용하면 입력받은 데이터를 공백(whitespace)으로 나누고 각각의 데이터를 변수에 할당해줍니다.

Output:

Enter two value: 10 30
v1: 10, v2: 30
sum: 40

만약 데이터를 whitespace로 구분하지 않고 Comma로 구분하려면 split(",")처럼 구분자를 인자로 넣어주면 됩니다.

v1, v2 = input("Enter two value: ").split(",")
v1, v2 = [int(v1), int(v2)]
sum = v1 + v2

Output:

Enter two value: 10,30
v1: 10, v2: 30
sum: 40

위의 예제들은 데이터를 입력받고 그 데이터를 integer 또는 float으로 변환하였는데요.

다음과 같이 구현하면 사용자로부터 문자열을 입력받고 바로 특정 타입으로 변환할 수 있습니다.

v1, v2 = [int(value) for value in input("Enter two value: ").split()]
sum = v1 + v2

print("v1: {}, v2: {}".format(v1, v2))
print("sum: {}".format(sum))

Output:

Enter two value: 10 30
v1: 10, v2: 30
sum: 40

3개 이상의 데이터를 받으려면, 다음과 같이 변수를 늘리면 됩니다.

v1, v2, v3 = input("Enter three value: ").split()
print("v1: {}, v2: {}, v3: {}".format(v1, v2, v3))

Output:

Enter three value: 10 20 30
v1: 10, v2: 20, v3: 30

4. 주의할 점

다음과 같은 경우에 에러가 발생할 수 있습니다. 이런 상황을 고려하여 예외처리를 해줘야 합니다.

  • 2개의 Integer를 받도록 구현했는데 문자열을 입력하면 다음과 같은 에러가 발생합니다.
Enter two value: 10 aa
Traceback (most recent call last):
  File "/home/js/blog-code/python_example/input/input.py", line 37, in <module>
    v1, v2 = [int(value) for value in input("Enter two value: ").split()]
  File "/home/js/blog-code/python_example/input/input.py", line 37, in <listcomp>
    v1, v2 = [int(value) for value in input("Enter two value: ").split()]
ValueError: invalid literal for int() with base 10: 'aa'
  • 3개의 데이터를 받기로 구현했는데 4개를 입력하면 다음과 같은 에러가 발생합니다.
Enter three value: 1 2 3 4
Traceback (most recent call last):
  File "/home/js/blog-code/python_example/input/input.py", line 46, in <module>
    v1, v2, v3 = input("Enter three value: ").split()
ValueError: too many values to unpack (expected 3)
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha