python에서 입력은 한 줄 단위로만 받을 수 있습니다.
만약 2개의 숫자를 한 줄에 공백을 사이에 두고 받고 싶다면 코드를 어떻게 작성하면 될까요?
python에는 split()이라는 함수가 있습니다. 이 함수는 문자열을 특정 기준으로 잘라주는 함수입니다.
예를 들어 다음과 같이 split 함수를 그대로 사용하면, 공백을 기준으로 문자열을 잘라 각 잘려나간 단위가 하나의 원소가 되어 해당 원소들을 가지고 있는 하나의 list가 만들어집니다.
python3 코드
a = input()
print(a.split())
출력결과
>> 13 17
['13', '17']
list라는 것은 여러 원소를 들고있는 묶음으로, list 안에 있는 각 원소를 참조하기 위해서는 원소의 번째 수 - 1 값을 대괄호 []와 같이 사용하여 가져올 수 있습니다.
예를 들어 다음 코드에서처럼 원소를 3개 들고 있는 arr라는 list에서 첫 번째 원소를 참조하기 위해서는 arr[0]으로, 2번째 원소는 arr[1], 3번째 원소는 arr[2]로 참조가 가능합니다.
python3 코드
arr = [5, 6, 10]
print(f"First element is {arr[0]}")
print(f"Second element is {arr[1]}")
print(f"Third element is {arr[2]}")
출력결과
First element is 5
Second element is 6
Third element is 10
따라서 공백을 사이에 두고 두 정수를 입력받아 각각의 정수를 변수 n, m 에 순서대로 넣어주고 싶다면 다음과 같은 코드를 작성해볼 수 있습니다. 그리고 두 정수의 곱을 최종적으로 구해주는 코드 작성 역시 가능해 보입니다. 하지만 최종적으로 n * m 값을 구하려 할 때 다음의 에러를 목격하게 됩니다.
python3 코드
a = input()
arr = a.split()
n = arr[0]
m = arr[1]
print(n)
print(m)
print(n * m)
출력결과
>> 13 17
13
17
---> print(n * m)
TypeError: can't multiply sequence by non-int of type 'str'
문자열 끼리는 곱하기 연산을 수행할 수 없다는 에러입니다. 이는 n, m 변수의 type이 정수가 아닌 문자열이라는 의미이므로, split을 진행한 이후 n, m에 리스트에 있는 원소를 담아 줄 때 int형으로 형변환을 해주는 것으로 해결이 가능합니다.
python3 코드
a = input()
arr = a.split()
n = int(arr[0])
m = int(arr[1])
print(n)
print(m)
print(n * m)
출력결과
>> 13 17
13
17
221
Side Note
위의 코드에서 input()과 split() 코드를 다음과 같이 한줄로 이어 작성하는 것도 가능합니다.
python3 코드
arr = input().split()
n = int(arr[0])
m = int(arr[1])
print(n)
print(m)
print(n * m)
입력받아 계산 2
정수 a, b를 입력받고, a와 b를 곱해준 값을 출력하는 프로그램을 작성해보세요.
풀이
# 변수 선언, 입력
inp = input()
arr = inp.split()
a = int(arr[0])
b = int(arr[1])
# 출력
print(a * b)
# 나의 풀이
inputs = input()
a, b = map(int, inputs.split())
result = a * b
print(result)
'Python > [코드트리]' 카테고리의 다른 글
[코드트리] 사칙연산 > 두 수의 곱과 몫 (0) | 2023.06.15 |
---|---|
[코드트리] 사칙연산 > 간단한 사칙연산 (0) | 2023.06.15 |
[코드트리] 특정 문자를 사이에 두고 2개의 값을 입력 (0) | 2023.06.15 |
[코드트리] 두 변수 값을 교환 (0) | 2023.06.14 |
[코드트리] 출력 > 출력형식_개념 (0) | 2023.06.14 |