AI資格ドリル
資格を選ぶ↓

用語比較

input()の戻り値(文字列)とint()で変換した整数の違い|足し算が連結になる理由(Python3エンジニア認定基礎試験)

input()は、キーボードから1行を読み取って文字列として返します。10と入力しても返るのは整数の10ではなく文字列の "10" で、そのまま + を使うと足し算ではなく文字列の連結になります。

Python3エンジニア認定基礎試験は、主教材「Pythonチュートリアル 第4版」の基礎文法部分から出題されます。Python公式チュートリアルの例外処理の項は、int(input(...)) を try と except ValueError で囲む形を例にしています。受け取ったら文字列、計算に使うならint()と分けると、出力予想の問題で迷いません。

このページは、2つの数を入力させて合計を出すプログラムの結果が 30 ではなく 1020 になる理由を知りたい人向けです。try と except の書き方そのものは別のページで扱い、ここでは文字列と整数の違いに絞ります。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。

結論

input() の戻り値

1行を読み取り、末尾の改行を除いた文字列として返す。数字を入力しても型は文字列。

int() の変換

int('123') は整数の 123 を返す。数字として読めない文字列では ValueError になる。

+ の動き

文字列どうしの + は連結、整数どうしの + は足し算になる。

違いを表で確認

比較軸input() の戻り値int() の変換
型input() の戻り値:常に文字列(str)int() で変換した値:整数(int)
"10" + "20" の結果文字列のまま:連結されて "1020"int() で変換してから:足し算になって 30
* 3 の動き文字列のまま:3回繰り返した文字列("10" * 3 は "101010")整数に変換してから:掛け算(10 * 3 は 30)
数字以外が入力されたときinput() 自体は何を入力してもエラーにならず、そのまま文字列で返るint() の段階で ValueError になる(例:abc)
設問で目にする語(目安)input()、文字列、連結、出力結果は何かint(input(...))、整数、ValueError、合計

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

2つの数を入力させて足したのに、結果が連結になった人

input() の戻り値は文字列です。a と b に "10" と "20" が入っていれば a + b は "1020" になります。int(a) + int(b) と書くと 30 になります。

02

数字を入力したのに、型が整数になっていると思っている人

キーボードから入った内容は、数字でも文字列として扱われます。整数として使いたい場面では、自分で int() を呼びます。

03

利用者が数字以外を入力するかもしれず、落ちないようにしたい人

int(input(...)) を try で囲み、except ValueError で受けます。公式チュートリアルも、数字として読めない入力に再入力を促す例を載せています。

具体例で使い分ける

例 1

合計が連結になる例:10と20を入力する場合(数値は説明用の例です)

a = input() に 10、b = input() に 20 を入力します。print(a + b) と print(int(a) + int(b)) を実行します。

  • a と b は文字列の "10" と "20" なので、a + b は文字列の連結で "1020" が表示されます。公式チュートリアルは、文字列が + 演算子で連結できると説明しています。
  • int(a) は整数の 10、int(b) は整数の 20 で、足し算の結果は 30 です。

結論: 1つ目は 1020、2つ目は 30 です。型が違うので + の動きが変わります。

例 2

例外処理と組み合わせる例:数字以外を入力する場合

x = int(input("Please enter a number: ")) を try で囲み、except ValueError で "Oops!" と表示させます。利用者が abc と入力します。

  • input() は abc を文字列で返します。ここまではエラーになりません。
  • int("abc") は数字として読めないので ValueError が起き、except ValueError の中が実行されます。
  • 公式チュートリアルは、この形を while True の中に置き、正しい数字が入るまで再入力を促す例として示しています。

結論: エラーが起きるのは input() ではなく int() の段階です。

問題文から答えを選ぶ手順

  1. 1

    input() の戻り値を文字列と見る

    何を入力しても、受け取った時点では文字列です。

  2. 2

    その値を計算に使うかを確認する

    足し算・比較・範囲指定など数として使うなら、int() で整数にします。

  3. 3

    変換できない入力があるかを考える

    数字以外が入りうるなら、int() を try で囲み、except ValueError で受けます。

試験での見分け方

  • 1input() の戻り値は、数字を入力しても文字列。
  • 2数として使うときは int(input(...)) のように変換する。
  • 3数字として読めない文字列を int() に渡すと ValueError になる。
  • 4文字列どうしの + は連結で、整数どうしの + は足し算。

誤答しやすい選択肢

input() の戻り値をそのまま足して、合計が出ると思う

修正: 文字列どうしの + は連結です。int() で変換してから足します。

ValueError が input() の行で起きると思う

修正: input() は何を入力しても文字列を返します。エラーが起きるのは int() に渡した段階です。

int(123.45) を 123.45 のまま、または 124 だと思う

修正: 公式ドキュメントのとおり、小数は 0 に近い方へ切り捨てられ、int(123.45) は 123 です。

確認問題

Q1a = input() に 5、b = input() に 7 を入力したとき、print(a + b) は何を表示しますか?

答え: 57

a と b は文字列の "5" と "7" なので、+ は連結になり 57 が表示されます。

Q2同じ入力のとき、print(int(a) + int(b)) は何を表示しますか?

答え: 12

int(a) は 5、int(b) は 7 なので、足し算の結果は 12 です。

Q3int("abc") を実行すると、どの例外が起きますか?

答え: ValueError

数字として読めない文字列を int() に渡したときに起きる例外で、except ValueError で受けられます。

到達チェック

  • input() の戻り値が文字列だと説明できる
  • "10" + "20" と int("10") + int("20") の結果の違いを言える
  • int() が ValueError を起こす場面を説明できる
  • int(input(...)) を try と except ValueError で囲む理由を言える

同じ資格で次に知りたいこと

よくある質問

Qinput() の戻り値の型は何ですか?

A

文字列(str)です。数字を入力しても、受け取った時点では文字列です。

Q入力した数字を整数にするにはどう書きますか?

A

int(input(...)) のように int() で変換します。

Q数字以外を入力するとどうなりますか?

A

input() は文字列を返しますが、int() に渡した段階で ValueError になります。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)