【Python】intとstringを変換する方法

【Python】intとstringを変換する方法

公開: 更新:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座

Pythonプログラムを作成していると、ユーザーの入力値やファイルから読み込んだデータが文字列型になっており、数値として計算に使えないケースに直面します。特にinput()関数で受け取った値は常に文字列型(str)で返されるため、そのままでは四則演算ができません。

この記事では、Pythonでintやstrの型変換を行う具体的な方法を、コピペで動作するサンプルコード付きで解説します。文字列から整数への変換だけではなく、整数から文字列への変換やfloat型からint型への変換まで網羅しているので、型変換で困った際の参考にしてください。



Pythonで文字列をint型に変換する方法

Pythonで文字列をint型(整数型)に変換するには、組み込み関数int()を使用します。int型とは、小数点を含まない整数を扱うデータ型のことです。ここでは、文字列をint型に変換する方法を3つ紹介します。

  1. int()関数で変換する
  2. 基数を指定して変換する
  3. エラーを回避して変換する

それぞれの方法にはサンプルコードを掲載しているので、用途に合わせて活用してください。

それでは各項目について、詳しく解説していきます。

int()関数で変換する

int()関数は、引数に渡した文字列を整数に変換するPythonの組み込み関数です。数字のみで構成された文字列を渡すと、対応する整数値が返されます。

text = "456"
number = int(text)
print(number)
print(type(number))

上記のコードを実行すると、456が整数として出力され、型は<class 'int'>と表示されます。文字列"456"が整数456に変換されていることを確認できます。

なお、文字列の先頭や末尾に空白文字(スペースやタブなど)が含まれている場合でも、int()関数は先頭と末尾の空白のみを無視して変換を行います。ただし、文字列内に小数点(.)が含まれている場合はValueErrorが発生するため、小数を含む文字列にはfloat()関数を使用する必要があります。

基数を指定して変換する

int()関数の第2引数に基数を指定すると、2進数や8進数、16進数の文字列を10進数の整数に変換できます。基数とは、数値を表現する際の桁上がりの単位を示す数のことです。

binary = "1010"
octal = "17"
hexadecimal = "1A"

print(int(binary, 2))
print(int(octal, 8))
print(int(hexadecimal, 16))

上記のコードでは、2進数の"1010"10に、8進数の"17"15に、16進数の"1A"26にそれぞれ変換されます。基数を省略した場合は10進数として扱われます。

0b0o0xのプレフィックスが付いた文字列を変換する場合は、第2引数に0を指定するとPythonがプレフィックスから基数を自動判定します。たとえばint("0xFF", 0)255を返します。

エラーを回避して変換する

数字以外の文字を含む文字列をint()関数に渡すと、ValueErrorが発生します。ユーザー入力のように変換可能かどうかが不確定なデータを扱う場合は、try-except構文でエラーを捕捉する方法が有効です。

user_input = "abc"

try:
    number = int(user_input)
    print(number)
except ValueError:
    print(f"'{user_input}'は整数に変換できません")

上記のコードでは、"abc"を整数に変換しようとしてValueErrorが発生しますが、exceptブロックでエラーメッセージを表示してプログラムの異常終了を防いでいます。

変換前に文字列が数字のみで構成されているかを確認したい場合は、str.isdigit()メソッドを使用する方法もあります。ただし、isdigit()は負の数(先頭にマイナス記号がある文字列)に対してFalseを返すほか、全角数字やUnicode数字に対してもTrueを返すため、int()の変換可否を正確に判定する用途には向いていません。確実な判定が必要な場合はtry-exceptを使用してください。


Python研修一覧はこちら

目的に合うPython研修を一覧形式から探したい方は、ぜひご利用ください。

Python研修を比較する

Java研修一覧はこちら

目的に合うJava研修を一覧形式から探したい方は、ぜひご利用ください。

Java研修を比較する

PHP研修一覧はこちら

目的に合うPHP研修を一覧形式から探したい方は、ぜひご利用ください。

PHP研修を比較する

新入社員研修

目的に合う新入社員研修を一覧形式から探したい方は、ぜひご利用ください。

新入社員研修を比較する

全ての研修からも探したい方はこちら

Pythonでint型を文字列に変換する方法

Pythonでint型の数値を文字列に変換する場面は、数値をメッセージに埋め込んで表示する場合やファイルに書き出す場合に発生します。ここでは、int型を文字列に変換する方法を3つ紹介します。

  1. str()関数で変換する
  2. f-stringで変換する
  3. format()メソッドで変換する

それぞれの方法には異なる特徴があり、コードの可読性や用途に応じて使い分けられます。

それでは各項目について、詳しく解説していきます。

str()関数で変換する

str()関数は、引数に渡した値を文字列型に変換するPythonの組み込み関数です。整数やfloat型の数値を文字列として扱いたい場合に使用します。

number = 100
text = str(number)
print("合計は" + text + "個です")
print(type(text))

上記のコードを実行すると、合計は100個ですと表示されます。str()関数によって整数100が文字列"100"に変換されたことで、文字列との連結(+演算子)が可能になっています。

str()関数を使わずに整数と文字列を+演算子で連結しようとすると、TypeErrorが発生します。Pythonでは文字列と数値の連結において暗黙的な型変換は行われないため、連結する際は明示的な変換が必要です。

f-stringで変換する

f-stringとは、文字列リテラルの先頭にfを付けて、波括弧{}内に変数を直接埋め込む記法のことです。Python 3.6以降で使用でき、str()関数を呼び出すことなく数値を文字列に組み込めます。

price = 1500
quantity = 3
message = f"単価{price}円で{quantity}個、合計{price * quantity}円です"
print(message)

上記のコードを実行すると、単価1500円で3個、合計4500円ですと表示されます。波括弧内に変数名だけではなく計算式も記述できるため、コードが簡潔になります。

f-stringは可読性が高く、複数の変数を1つの文字列に埋め込む場合に特に便利です。str()関数と+演算子を組み合わせるよりもコード量が少なくなるため、Python 3.6以降の環境では積極的に活用してください。

format()メソッドで変換する

format()メソッドは、文字列内のプレースホルダー{}に値を挿入する文字列メソッドです。動的にフォーマット文字列を組み立てたい場合や、書式を細かく制御したい場合に使用します。

name = "商品A"
price = 2980

result = "{}の価格は{:,}円です".format(name, price)
print(result)

上記のコードを実行すると、商品Aの価格は2,980円ですと表示されます。{:,}のように書式指定子を使うと、数値にカンマ区切りを自動で付与できます。

format()メソッドでは、{:.2f}で小数点以下2桁に固定したり、{:>10}で右寄せ10文字幅にしたりする書式指定も可能です。f-stringでも同様の書式指定は可能ですが、フォーマット文字列を変数として動的に構成したい場合はformat()メソッドが適しています。

Pythonでfloat型をint型に変換する方法

Pythonでfloat型(浮動小数点数型)をint型に変換する方法は、小数点以下の扱い方によって使い分ける必要があります。float型とは、3.14のように小数点を含む数値を扱うデータ型のことです。ここでは、float型をint型に変換する方法を3つ紹介します。

  1. int()関数で小数点以下を切り捨てる
  2. math.floor()とmath.ceil()で変換する
  3. round()関数で四捨五入する

それぞれの方法で変換結果が異なるため、目的に応じて適切な関数を選択してください。

それでは各項目について、詳しく解説していきます。


Python基礎・実践(Django)

企業・法人向けのPython研修では、基礎から応用まで体系的に学べます。

Python研修の詳細

DX社員研修

企業・法人向けのDX研修では、実務に繋がるリスキリングでITレベルを向上させます。

DX研修の詳細

Javaエンジニア育成研修

企業・法人向けのJavaエンジニア育成研修では、Javaの基礎から応用まで確実に習得できます。

Java研修の詳細

新卒・新入社員向け研修

企業・法人に新入社員・新卒社員に向けたプログラミング研修を提供しています。

新入社員研修の詳細

コードキャンプのIT研修を全て見る

int()関数で小数点以下を切り捨てる

int()関数にfloat型の値を渡すと、小数点以下が切り捨てられて整数に変換されます。この動作は「0に向かって切り捨てる」処理であり、正の数では小数部分の切り捨て、負の数では切り上げに相当します。

positive = 3.9
negative = -3.9

print(int(positive))
print(int(negative))

上記のコードを実行すると、int(3.9)3を返し、int(-3.9)-3を返します。負の数の場合は-4ではなく-3になる点に注意してください。

単純に小数部分を除去したい場合はint()関数が最も簡潔な方法です。ただし、常に小さい方の整数に丸めたい場合(床関数)や常に大きい方の整数に丸めたい場合(天井関数)は、次のH3で解説するmathモジュールの関数を使用してください。

math.floor()とmath.ceil()で変換する

Pythonに標準搭載されているmathモジュールのmath.floor()関数は常に小さい方の整数に切り捨て、math.ceil()関数は常に大きい方の整数に切り上げます。

import math

value = 3.2

print(math.floor(value))
print(math.ceil(value))
print(math.floor(-3.2))
print(math.ceil(-3.2))

上記のコードを実行すると、math.floor(3.2)3math.ceil(3.2)4を返します。負の数ではmath.floor(-3.2)-4math.ceil(-3.2)-3を返します。

int()関数との違いは、負の数の処理にあります。int(-3.2)-3(0方向への切り捨て)ですが、math.floor(-3.2)-4(常に小さい方への切り捨て)です。金額計算のように正確な端数処理が求められる場面では、math.floor()math.ceil()を使用してください。

round()関数で丸める

round()関数は、指定した桁数で数値を丸める組み込み関数です。第2引数を省略すると、小数点以下を丸めた整数を返します。

print(round(3.4))
print(round(3.7))
print(round(0.5))
print(round(1.5))
print(round(2.5))

上記のコードを実行すると、round(3.4)3round(3.7)4を返します。一方、round(0.5)0round(1.5)2round(2.5)2を返します。

Pythonのround()関数は「銀行家の丸め」(偶数丸め)を採用しており、.5の場合は最も近い偶数に丸められます。一般的な四捨五入とは異なる結果になるため、厳密な四捨五入が必要な場合はdecimalモジュールのDecimalクラスでquantize()メソッドにROUND_HALF_UPを指定する方法を検討してください。

Pythonの型変換に関するよくある質問

int()で変換できない文字列はどうすればよいですか?

int()関数で変換できない文字列(アルファベットや記号を含む文字列)を整数に変換しようとすると、ValueErrorが発生します。この場合はtry-except構文でエラーを捕捉し、デフォルト値を設定するかエラーメッセージを表示する方法が有効です。

def safe_int(text, default=0):
    try:
        return int(text)
    except ValueError:
        return default

print(safe_int("123"))
print(safe_int("abc"))
print(safe_int("", -1))

上記のコードでは、変換に失敗した場合にデフォルト値を返す関数を定義しています。safe_int("abc")0を返し、safe_int("", -1)-1を返します。

intとfloatの違いは何ですか?

int型は小数点を含まない整数(例: 1-5100)を扱い、float型は小数点を含む数値(例: 3.14-0.51.0)を扱います。Pythonではint型はメモリが許す限り任意の大きさの整数を扱えますが、float型は有効桁数に限界があります。

print(type(10))
print(type(10.0))
print(10 == 10.0)
print(type(10) == type(10.0))

上記のコードを実行すると、1010.0は値としては等しい(==True)ですが、type()で確認すると型が異なることがわかります。int型とfloat型の演算結果は自動的にfloat型になるため、整数の精度を維持したい場合は最初からfloat化せずに整数演算で処理してください。

input()で受け取った値を数値として使うにはどうすればよいですか?

input()関数は常にstr型(文字列型)で値を返すため、数値として計算に使うにはint()float()で明示的に型変換する必要があります。ユーザーが数字以外を入力する可能性がある場合は、try-exceptでエラー処理を行ってください。

while True:
    user_input = input("整数を入力してください: ")
    try:
        number = int(user_input)
        print(f"入力値の2倍は{number * 2}です")
        break
    except ValueError:
        print("整数を入力してください")

上記のコードでは、ユーザーが整数以外の値を入力した場合に再入力を求めるループ処理を実装しています。正しい整数が入力されると計算結果を表示してループを終了します。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

企業・法人向けのIT・プログラミング・生成AI研修を探す、比較する - IT・プログラミングを知って学べるコネクトメディア CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 3.5日の研修で、年間1,600時間の削減効果が見込まれる。東京きらぼしフィナンシャルグループのDX人材育成事例 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する