파이썬의 내장 함수 중 하나인 int()는 숫자와 문자열 데이터를 정수로 변환하는 데 자주 사용하는 내장함수입니다. 오늘 이 글에서는 int함수의 기본적인 사용법부터 심화사용법의 대해서 진법 변환, 문자열 변환, 예외 처리 등의 대해서 알아보겠습니다.
기본적인 int() 함수 사용법
int() 함수는 주어진 값을 정수로 변환합니다. 이 함수는 문자열이나 부동 소수점 숫자를 인수로 받아들이며, 이를 정수로 변환하여 반환합니다. 간단한 예제를 통해 int() 함수의 기본적인 사용법을 살펴보겠습니다.
문자열을 정수로 변환
문자열을 정수로 변환하는 것은 매우 일반적인 작업입니다. 예를 들어, 사용자 입력이나 파일에서 읽어들인 문자열 데이터를 정수로 변환하여 계산이나 비교 작업을 수행할 수 있습니다.
str_number = "456"
int_number = int(str_number)
print(int_number) # 출력: 456
부동 소수점을 정수로 변환
부동 소수점 숫자를 정수로 변환할 때 소수점 이하의 숫자는 버려집니다. 이를 통해 부동 소수점을 정수로 간편하게 변환할 수 있습니다.
float_number = 3.14
int_number = int(float_number)
print(int_number) # 출력: 3
진법 변환을 통한 int() 함수 활용
int() 함수는 두 번째 인수로 진법(base)을 지정할 수 있습니다. 이를 통해 다양한 진법의 문자열을 정수로 변환할 수 있습니다. 이 기능은 다양한 진법을 다루는 작업에서 매우 유용합니다.
2진수 문자열을 정수로 변환
2진수 문자열을 정수로 변환하는 예제입니다. 2진수는 이진법으로 표현된 숫자를 의미하며, int() 함수의 두 번째 인수로 2를 전달하여 변환할 수 있습니다.
binary_number = "1010"
int_number = int(binary_number, 2)
print(int_number) # 출력: 10
16진수 문자열을 정수로 변환
16진수 문자열을 정수로 변환하는 예제입니다. 16진수는 0-9와 A-F를 사용하여 표현된 숫자를 의미하며, int() 함수의 두 번째 인수로 16을 전달하여 변환할 수 있습니다.
hex_number = "1A"
int_number = int(hex_number, 16)
print(int_number) # 출력: 26
문자열을 정수로 변환할 때 주의사항
문자열을 정수로 변환할 때는 문자열이 올바른 숫자 형식을 가져야 합니다. 그렇지 않으면 ValueError가 발생합니다. 예제를 통해 올바른 형식과 그렇지 않은 형식의 문자열을 처리하는 방법을 살펴보겠습니다.
올바른 숫자 형식의 문자열 변환
정수형 문자열은 문제 없이 변환됩니다.
valid_str = "789"
int_number = int(valid_str)
print(int_number) # 출력: 789
올바르지 않은 숫자 형식의 문자열 변환
숫자 외의 문자가 포함된 문자열을 변환하려고 하면 오류가 발생합니다.
invalid_str = "123abc"
try:
int_number = int(invalid_str)
except ValueError as e:
print(f"Error: {e}") # 출력: Error: invalid literal for int() with base 10: '123abc'
int() 함수의 예외 처리
int() 함수 사용 시 발생할 수 있는 대표적인 예외 상황은 ValueError와 TypeError입니다. 이 예외들을 적절히 처리하여 프로그램이 중단되지 않도록 하는 방법을 살펴보겠습니다.
ValueError 예외 처리
ValueError는 문자열이 올바른 숫자 형식을 가지지 않을 때 발생합니다.
invalid_str = "abc"
try:
int_number = int(invalid_str)
except ValueError as e:
print(f"ValueError: {e}")
TypeError 예외 처리
TypeError는 변환할 수 없는 타입을 전달했을 때 발생합니다.
invalid_type = [1, 2, 3]
try:
int_number = int(invalid_type)
except TypeError as e:
print(f"TypeError: {e}")
int() 함수와 다양한 데이터 타입
int() 함수는 문자열과 부동소수점 숫자 외에도 다양한 데이터 타입을 정수로 변환할 수 있습니다. 예를 들어, boolean 값이나 다른 숫자 타입을 정수로 변환할 수 있습니다.
Boolean 값을 정수로 변환
True는 1로, False는 0으로 변환됩니다.
bool_true = True
bool_false = False
print(int(bool_true)) # 출력: 1
print(int(bool_false)) # 출력: 0
복소수를 정수로 변환
복소수를 정수로 변환하려 하면 TypeError가 발생합니다.
complex_number = 1 + 2j
try:
int_number = int(complex_number)
except TypeError as e:
print(f"TypeError: {e}") # 출력: TypeError: can't convert complex to int
자주 발생하는 오류 해결 방법
숫자인지 확인하는 방법
사용자가 입력한 값이 숫자인지 확인하여 변환합니다.
user_input = "123"
if user_input.isdigit():
int_number = int(user_input)
print(f"Converted number: {int_number}")
else:
print("Invalid input: Not a number")
부동 소수점 문자열을 정수로 변환
부동 소수점 문자열을 정수로 변환할 때는 먼저 float() 함수를 사용하여 부동 소수점으로 변환한 후 int() 함수를 사용합니다.
float_str = "45.67"
try:
int_number = int(float(float_str))
print(f"Converted number: {int_number}")
except ValueError as e:
print(f"ValueError: {e}")
실전 예제: 다양한 상황에서의 int() 함수 활용
사용자 입력을 정수로 변환하여 계산하기
사용자가 입력한 나이를 정수로 변환하여 계산합니다.
user_age = input("Enter your age: ")
try:
age = int(user_age)
print(f"Next year, you will be {age + 1} years old.")
except ValueError:
print("Invalid input: Please enter a valid number.")
파일에서 숫자 데이터를 읽어와서 정수로 변환
파일에서 숫자 데이터를 읽어와 정수로 변환하는 예제입니다.
with open("numbers.txt", "r") as file:
for line in file:
try:
number = int(line.strip())
print(f"Read number: {number}")
except ValueError:
print(f"Invalid line: {line.strip()}")
웹에서 데이터를 받아와 정수로 변환
웹에서 데이터를 받아와 정수로 변환하는 예제입니다.
import requests
response = requests.get("https://api.example.com/data")
data = response.json()
for item in data:
try:
number = int(item["value"])
print(f"Converted value: {number}")
except (ValueError, KeyError) as e:
print(f"Error: {e}")
난수 생성 후 정수로 변환
난수를 생성하여 정수로 변환하는 예제입니다.
import random
random_float = random.random() * 100
random_int = int(random_float)
print(f"Random integer: {random_int}")
로그 파일에서 에러 코드 추출 및 변환
로그 파일에서 에러 코드를 추출하여 정수로 변환하는 예제입니다.
log_lines = [
"INFO: Operation completed successfully",
"ERROR: Code 404",
"ERROR: Code 500",
"INFO: Connection established"
]
for line in log_lines:
if "ERROR" in line:
try:
error_code = int(line.split()[-1])
print(f"Error code: {error_code}")
except ValueError:
print(f"Invalid error code in line: {line}")
int() 함수 활용 팁
유효성 검사
사용자 입력을 받을 때 입력값이 정수로 변환될 수 있는지 사전에 검증하는 것이 좋습니다.
user_input = input("Enter a number: ")
if user_input.isdigit():
number = int(user_input)
print(f"Converted number: {number}")
else:
print("Invalid input: Not a number")
try-except 사용
예외 처리를 통해 변환 과정에서 발생할 수 있는 오류를 처리할 수 있습니다.
values = ["123", "456", "abc", "789"]
for value in values:
try:
number = int(value)
print(f"Converted number: {number}")
except ValueError:
print(f"Cannot convert {value} to int")
정규 표현식 사용
복잡한 문자열에서 숫자 부분만 추출하여 변환할 수 있습니다.
import re
string_with_numbers = "The price is 123 dollars"
match = re.search(r'\d+', string_with_numbers)
if match:
number = int(match.group())
print(f"Extracted number: {number}")
else:
print("No numbers found in the string")
부동 소수점 숫자 처리
반올림하여 정수로 변환하려면 round 함수를 사용할 수 있습니다.
float_number = 45.67
int_number = int(round(float_number))
print(f"Rounded and converted number: {int_number}")
마무리
파이썬의 int() 함수는 문자열, 부동 소수점, 다양한 진법의 숫자 등을 정수로 변환하는 데 매우 유용합니다. 이 글에서 다룬 다양한 사용법과 예제를 통해 int() 함수를 더욱 효과적으로 활용할 수 있을 것입니다.
'IT' 카테고리의 다른 글
파이썬(python) 라이브러리란 무엇인가? | 뜻과 종류들 math, time, statistics (2) | 2024.07.23 |
---|---|
파이썬 float() 함수의 기본사용법 부터 심화까지 (0) | 2024.07.20 |
자바스크립트 비동기처리란 무엇인가? (1) | 2024.06.09 |
객체지향프로그래밍 언어란 무엇인가? (0) | 2024.06.04 |
c언어 연산자 종류 정리 이글로 종결 (0) | 2024.06.01 |