Python int関数とは?文字列を整数に変換する方法

Python初心者向けにint関数の使い方を解説。文字列から整数への変換、進数指定、エラーハンドリングまで実例とともに学べます。

Learning Next 運営
24 分で読めます

みなさん、Pythonでプログラムを書いている時に「"123"という文字列を数値として計算に使いたい」と思ったことはありませんか?

「ユーザーの入力を数値に変換したい」 「ファイルから読み込んだデータで計算したい」 「型変換って何だか難しそう...」

そんな疑問を抱えている方も多いはず。 でも大丈夫です!

この記事では、Python int関数の使い方を初心者向けに分かりやすく解説します。 文字列を数値に変換する方法を、一緒にマスターしていきましょう!

int関数って何?

int関数は、文字列や他のデータ型を整数に変換してくれるPythonの組み込み関数です。 簡単に言うと、「データの種類を変える」機能なんです。

基本的な例を見てみよう

まずは、シンプルな例から始めましょう:

# int関数の基本例
string_number = "123"
integer_number = int(string_number)
print(f"文字列: {string_number} (型: {type(string_number)})")
print(f"整数: {integer_number} (型: {type(integer_number)})")
# 計算での違い
print(f"文字列 + '456': {string_number + '456'}") # 文字列連結
print(f"整数 + 456: {integer_number + 456}") # 数値計算

実行結果:

文字列: 123 (型: <class 'str'>) 整数: 123 (型: <class 'int'>) 文字列 + '456': 123456 整数 + 456: 579

文字列の"123"が整数の123に変わって、計算ができるようになりました。

なぜ型変換が必要なの?

プログラミングでは、データの種類(型)によって使える操作が決まります。 型変換が必要になる場面を見てみましょう:

# ユーザー入力の処理例
user_input = "25" # input()は常に文字列で返される
print(f"入力値: {user_input} (型: {type(user_input)})")
# 文字列のままでは数値計算ができない
try:
next_year_age = user_input + 1 # エラーが発生
except TypeError as e:
print(f"エラー: 文字列と数値は足せません")
# int関数で変換すると計算可能
age = int(user_input)
next_year_age = age + 1
print(f"来年の年齢: {next_year_age}歳")

実行結果:

入力値: 25 (型: <class 'str'>) エラー: 文字列と数値は足せません 来年の年齢: 26歳

int関数で変換することで、文字列データを数値計算で活用できるようになります。

基本的な使い方

int関数の基本的な使い方を、パターン別に見ていきましょう。 どのパターンもよく使うので、しっかり覚えてくださいね。

文字列から整数への変換

最もよく使う、文字列から整数への変換です:

# 基本的な文字列→整数変換
positive_str = "42"
positive_int = int(positive_str)
print(f"'{positive_str}' → {positive_int}")
# 負の数
negative_str = "-17"
negative_int = int(negative_str)
print(f"'{negative_str}' → {negative_int}")
# ゼロ
zero_str = "0"
zero_int = int(zero_str)
print(f"'{zero_str}' → {zero_int}")
# 前後の空白は自動で削除される
spaced_str = " 123 "
spaced_int = int(spaced_str)
print(f"'{spaced_str}' → {spaced_int}")

実行結果:

'42' → 42 '-17' → -17 '0' → 0 ' 123 ' → 123

前後に空白があっても、自動的に取り除いて変換してくれます。

様々な数値形式の変換

いろいろな形式の数値文字列を変換してみましょう:

# 一般的な数値
numbers = ["1", "123", "999", "1000"]
for num_str in numbers:
num_int = int(num_str)
print(f"'{num_str}' → {num_int:,}") # カンマ区切りで表示
# プラス記号付きの数値
plus_number = "+456"
plus_int = int(plus_number)
print(f"'{plus_number}' → {plus_int}")

実行結果:

'1' → 1 '123' → 123 '999' → 999 '1000' → 1,000 '+456' → 456

プラス記号が付いていても、正しく変換されます。

他のデータ型からの変換

文字列以外のデータ型からも変換できます:

# 浮動小数点数から整数への変換(小数点以下切り捨て)
float_numbers = [3.14, 2.99, 5.0, -2.7]
for float_num in float_numbers:
int_num = int(float_num)
print(f"{float_num}{int_num}")
print("
注意: int()は小数点以下を切り捨てます(四捨五入ではない)")
# ブール値から整数への変換
print(f"True → {int(True)}") # 1
print(f"False → {int(False)}") # 0
# 引数なしのint()は0を返す
empty_int = int()
print(f"int() → {empty_int}")

実行結果:

3.14 → 3 2.99 → 2 5.0 → 5 -2.7 → -2 注意: int()は小数点以下を切り捨てます(四捨五入ではない) True → 1 False → 0 int() → 0

小数点以下は切り捨てられることに注意してください。

進数指定での変換

int関数では、2進数や16進数などの異なる進数で表現された文字列も変換できます。 プログラミングでは意外と使う機会が多いんです。

基本的な進数変換

代表的な進数での変換例です:

# 2進数(base=2)
binary_str = "1010"
binary_int = int(binary_str, 2)
print(f"2進数 '{binary_str}' → 10進数 {binary_int}")
# 8進数(base=8)
octal_str = "755"
octal_int = int(octal_str, 8)
print(f"8進数 '{octal_str}' → 10進数 {octal_int}")
# 16進数(base=16)
hex_str = "FF"
hex_int = int(hex_str, 16)
print(f"16進数 '{hex_str}' → 10進数 {hex_int}")

実行結果:

2進数 '1010' → 10進数 10 8進数 '755' → 10進数 493 16進数 'FF' → 10進数 255

第2引数に進数を指定することで、様々な進数から変換できます。

プレフィックス付きの進数

プレフィックス(接頭辞)が付いた進数も自動判定できます:

# プレフィックス付きの進数(base=0で自動判定)
prefixed_numbers = [
"0b1010", # 2進数
"0o755", # 8進数
"0xFF" # 16進数
]
for num_str in prefixed_numbers:
result = int(num_str, 0) # base=0で自動判定
print(f"'{num_str}' → {result}")

実行結果:

'0b1010' → 10 '0o755' → 493 '0xFF' → 255

base=0を指定すると、プレフィックスから進数を自動判定してくれます。

実用例:色の16進数変換

Webサイトなどでよく使われる、色の16進数変換の例です:

# 色の16進数変換
color_codes = ["FF", "80", "00"] # RGB値
color_names = ["赤", "緑", "青"]
print("色の16進数変換:")
for code, name in zip(color_codes, color_names):
decimal_value = int(code, 16)
print(f"{name}: #{code}{decimal_value}")
# HTMLカラーコード全体
html_color = "FF8000" # オレンジ色
red = int(html_color[0:2], 16)
green = int(html_color[2:4], 16)
blue = int(html_color[4:6], 16)
print(f"
#{html_color} → RGB({red}, {green}, {blue})")

実行結果:

色の16進数変換: 赤: #FF → 255 緑: #80 → 128 青: #00 → 0 #FF8000 → RGB(255, 128, 0)

Web開発でよく使われるカラーコードの変換もできます。

エラー処理と対策

int関数を使う時に起きるエラーと、その対処法を学びましょう。 エラーを上手に処理することで、安定したプログラムが作れます。

よくあるエラーパターン

int関数で発生する主なエラーを見てみましょう:

# ValueError が発生するケース
invalid_strings = [
"abc", # アルファベット
"12.34", # 小数点を含む文字列
"123abc", # 数字と文字の混在
"", # 空文字列
"12 34", # スペースを含む
"123" # 全角数字
]
print("ValueError が発生するケース:")
for invalid_str in invalid_strings:
try:
result = int(invalid_str)
print(f"'{invalid_str}' → {result}")
except ValueError:
print(f"'{invalid_str}' → エラー: 変換できません")

実行結果:

ValueError が発生するケース: 'abc' → エラー: 変換できません '12.34' → エラー: 変換できません '123abc' → エラー: 変換できません '' → エラー: 変換できません '12 34' → エラー: 変換できません '123' → エラー: 変換できません

これらのパターンは変換できないので、エラーが発生します。

安全な型変換関数

エラーが起きても止まらない、安全な変換関数を作ってみましょう:

def safe_int(value, default=0):
"""安全なint変換(エラー時はデフォルト値を返す)"""
try:
return int(value)
except (ValueError, TypeError):
return default
# テストケース
test_values = ["123", "abc", "45.67", None, "", " 789 "]
print("安全な型変換関数のテスト:")
for value in test_values:
result = safe_int(value)
print(f"safe_int('{value}') → {result}")
# デフォルト値を指定した例
print("
デフォルト値を-1に指定:")
for value in test_values:
result = safe_int(value, default=-1)
print(f"safe_int('{value}', default=-1) → {result}")

実行結果:

安全な型変換関数のテスト: safe_int('123') → 123 safe_int('abc') → 0 safe_int('45.67') → 0 safe_int('None') → 0 safe_int('') → 0 safe_int(' 789 ') → 789 デフォルト値を-1に指定: safe_int('123', default=-1) → 123 safe_int('abc', default=-1) → -1 safe_int('45.67', default=-1) → -1 safe_int('None', default=-1) → -1 safe_int('', default=-1) → -1 safe_int(' 789 ', default=-1) → 789

エラーが起きても、デフォルト値を返してプログラムが止まりません。

ユーザー入力の検証

実際のプログラムでよく使われる、入力検証の例です:

def get_age_input():
"""年齢入力の検証例"""
# 実際のプログラムではinput()を使用
sample_inputs = ["25", "abc", "150", "-5", "20"]
for sample_input in sample_inputs:
print(f"
入力値: '{sample_input}'")
try:
age = int(sample_input)
# 範囲チェック
if age < 0:
print("エラー: 年齢は0以上で入力してください")
continue
if age > 120:
print("エラー: 年齢は120以下で入力してください")
continue
print(f"有効な年齢: {age}歳")
return age
except ValueError:
print("エラー: 数値を入力してください")
print("年齢入力の検証例:")
get_age_input()

実行結果:

年齢入力の検証例: 入力値: '25' 有効な年齢: 25歳 入力値: 'abc' エラー: 数値を入力してください 入力値: '150' エラー: 年齢は120以下で入力してください 入力値: '-5' エラー: 年齢は0以上で入力してください 入力値: '20' 有効な年齢: 20歳

このように検証することで、適切な値だけを受け入れられます。

実践的な活用例

実際のプログラムでint関数がどのように使われるか、具体例を見てみましょう。 これらの例を参考に、実際のプロジェクトで活用してください。

CSVデータの処理

ファイルから読み込んだCSVデータを処理する例です:

# サンプルCSVデータ
csv_content = """名前,年齢,点数,クラス
田中太郎,20,85,1
佐藤花子,19,92,2
鈴木一郎,21,78,1
高橋美咲,20,88,3"""
# CSVデータの解析
lines = csv_content.strip().split('
')
headers = lines[0].split(',')
students = []
for line in lines[1:]:
values = line.split(',')
student = {
'name': values[0],
'age': int(values[1]), # 文字列→整数変換
'score': int(values[2]), # 文字列→整数変換
'class': int(values[3]) # 文字列→整数変換
}
students.append(student)
print("処理されたデータ:")
for student in students:
print(f" {student}")
# 統計計算
ages = [student['age'] for student in students]
scores = [student['score'] for student in students]
print(f"
統計情報:")
print(f"平均年齢: {sum(ages) / len(ages):.1f}歳")
print(f"平均点: {sum(scores) / len(scores):.1f}点")

実行結果:

処理されたデータ: {'name': '田中太郎', 'age': 20, 'score': 85, 'class': 1} {'name': '佐藤花子', 'age': 19, 'score': 92, 'class': 2} {'name': '鈴木一郎', 'age': 21, 'score': 78, 'class': 1} {'name': '高橋美咲', 'age': 20, 'score': 88, 'class': 3} 統計情報: 平均年齢: 20.0歳 平均点: 85.8点

CSVファイルの数値データを正しく変換して、統計計算ができました。

設定ファイルの処理

アプリケーションの設定ファイルを処理する例です:

# 設定ファイルの内容(key=value形式)
config_content = """# アプリケーション設定
port=8080
timeout=30
max_connections=100
debug=1
retry_count=3"""
config = {}
for line in config_content.split('
'):
line = line.strip()
# コメント行をスキップ
if line.startswith('#') or not line:
continue
# key=value の分割
if '=' in line:
key, value = line.split('=', 1)
# 数値として解釈できる場合は変換
try:
config[key] = int(value)
except ValueError:
config[key] = value # 文字列のまま保持
print("処理された設定:")
for key, value in config.items():
print(f" {key}: {value} ({type(value).__name__})")
# 設定値の使用例
if config.get('debug', 0):
print("
デバッグモードが有効です")

実行結果:

処理された設定: port: 8080 (int) timeout: 30 (int) max_connections: 100 (int) debug: 1 (int) retry_count: 3 (int) デバッグモードが有効です

設定ファイルの数値を自動的に変換して、適切な型で保存できました。

ゲームスコア管理システム

ゲームのスコア管理システムでの活用例です:

class ScoreManager:
"""ゲームスコア管理クラス"""
def __init__(self):
self.scores = {}
def add_player_score(self, player_name, score_str):
"""プレイヤーのスコア追加"""
try:
score = int(score_str)
if player_name not in self.scores:
self.scores[player_name] = []
self.scores[player_name].append(score)
print(f"{player_name}のスコア {score} を追加しました")
except ValueError:
print(f"エラー: '{score_str}' は有効なスコアではありません")
def get_player_stats(self, player_name):
"""プレイヤーの統計情報"""
if player_name not in self.scores:
print(f"{player_name}のデータがありません")
return
player_scores = self.scores[player_name]
total_score = sum(player_scores)
avg_score = total_score / len(player_scores)
best_score = max(player_scores)
game_count = len(player_scores)
print(f"
{player_name}の統計:")
print(f" ゲーム数: {game_count}")
print(f" 合計スコア: {total_score:,}")
print(f" 平均スコア: {avg_score:.1f}")
print(f" 最高スコア: {best_score:,}")
# スコア管理システムの使用例
score_mgr = ScoreManager()
# サンプルデータの追加
sample_data = [
("Alice", "1500"),
("Bob", "1200"),
("Alice", "1800"),
("Charlie", "abc"), # エラーケース
("Bob", "1350"),
("Alice", "1650")
]
print("スコア管理システムのテスト:")
for player, score in sample_data:
score_mgr.add_player_score(player, score)
score_mgr.get_player_stats("Alice")

実行結果:

スコア管理システムのテスト: Aliceのスコア 1500 を追加しました Bobのスコア 1200 を追加しました Aliceのスコア 1800 を追加しました エラー: 'abc' は有効なスコアではありません Bobのスコア 1350 を追加しました Aliceのスコア 1650 を追加しました Aliceの統計: ゲーム数: 3 合計スコア: 4,950 平均スコア: 1650.0 最高スコア: 1,800

エラー処理により、無効なスコアも安全に処理できています。

まとめ

Python int関数の重要なポイントをまとめます。

基本概念

  • 文字列や他の型を整数に変換する関数
  • **型変換(キャスト)**の基本的な機能
  • プログラムでの数値処理に必須

基本的な使い方

  • int(string): 文字列を整数に変換
  • int(float): 浮動小数点数を整数に変換(切り捨て)
  • int(bool): ブール値を整数に変換(True→1, False→0)

進数指定

  • int(string, base): 指定した進数で変換
  • 2進数、8進数、16進数などに対応
  • base=0で自動判定(プレフィックス対応)

エラー処理

  • ValueError: 変換できない文字列
  • TypeError: 変換できない型
  • try-except文での安全な処理

実践的な活用場面

  • CSVデータの数値変換
  • 設定ファイルの処理
  • ユーザー入力の検証
  • ゲームやアプリのデータ管理

int関数は、Pythonプログラミングで最も頻繁に使用される型変換関数の一つです。 文字列データを数値として処理する際には必須の機能で、エラーハンドリングと組み合わせることで堅牢なプログラムが作成できます。

ぜひ様々なデータ処理場面で、今回学んだint関数を活用してみてくださいね! きっとプログラミングがもっと楽しくなるはずです。

関連記事