오늘은 사용자가 입력한 데이터를 입력받는 방법과 자료형이 다를경우 형변환을 통해 자료형을 변환하는 작업에 대해서 적어보겠다.
📁 사용방법
x = input()
📁 예시
x = input("입력하세요 >>>")
# 1) 할당연산자(=) 오른쪽부터 실행
# 2) input 함수 실행 시, 메세지를 출력하고 입력을 기다림
# 3) 사용자가 데이터를 입력하고 엔터를 치면
# 4) input 함수 자리에 데이터가 들어간다
📌 실습문제 1
- 사용자로부터 2개의 숫자를 입력 받아 더한 결과를 출력
📌 입력값
- 1번째 숫자 입력 : 30
- 2번째 숫자 입력 : 40
📌 출력값
- 70# 입력값 first_value = input("1번재 숫자 입력 : ") second_value = input("2번째 숫자 입력 : ") # 출력값 total_value = first_value + second_value print(total_value) # 70이 나오는 것을 기대했으나 값은 3040이 출력되었다.
💥 원인
1. input 데이터의 값은 문자열, 더하기 X (해결방법1, 2)
2. 문자열을 숫자열로 변경해야 한다
📎 해결방법 1
- input 데이터 값을 숫자형으로 형변환# 입력값 first_value = int(input("1번재 숫자 입력 : ")) second_value = int(input("2번째 숫자 입력 : ")) # 출력값 total_value = first_value + second_value print(total_value)
📎 해결방법 2
- 출력할 값을 숫자형으로 형변환# 입력값 first_value = input("1번재 숫자 입력 : ") second_value = input("2번째 숫자 입력 : ") # 출력값 total_value = int(first_value) + int(second_value) print(total_value)
📌 실습문제 2
- 태어난 연도와, 현재연도를 입력 받아, 현재 나이를 출력하기
📌 입력값
- 현재연도 입력 : 2022
- 태어난 연도 입력 : 1993
📌 출력값
- “현재 나이는 30 입니다.”# 입력값 birth_year = input("태어난 연도 입력 : ") # 출력값 cur_year = 2022 age = cur_year - birth_year print("현재 나이는", age, "세 입니다.") # 에러 발생 # TypeError: unsupported operand type(s) for -: 'int' and 'str' # 숫자형과 문자열의 복합에서는 빼기 연산 지원하지 않는다
💥 원인
1. input 데이터의 값은 문자열 빼기 X (해결방법 1)
2. 문자열과 숫자열을 같이 출력할 수 없다 (해결방법 2)📎 해결방법1
- input 데이터 값을 숫자형으로 형변환 또는 age의 값을
int형으로 변환한다.# 입력값 birth_year = int(input("태어난 연도 입력 : ")) # 출력값 cur_year = 2022 age = cur_year - birth_year print("현재 나이는", age, "세 입니다.")
# 입력값 birth_year = input("태어난 연도 입력 : ") # 출력값 cur_year = 2022 age = int(cur_year) - int(birth_year) print("현재 나이는", age, "세 입니다.")
📎 해결방법2
- 빼기 연산의 문제는 해결되었다
- 출력 시에 문제 발생
- TypeError: can only concatenate str (not "int") to str
- str("int" 아님)만 str에 연결할 수 있습니다.
- 출력문에 age를 문자열로 형변환# 입력값 birth_year = input("태어난 연도 입력 : ") # 출력값 # age를 문자열로 형변환하면 정상적으로 계산된 결과 출력 cur_year = 2022 age = int(cur_year) - int(birth_year) print("현재 나이는", str(age), "세 입니다.")
# 변수의 값
val1 = 10
val2 = "10"
# 자료형 확인
print(type(val1))
print(tpye(val2))