1. ホーム
  2. パイソン

[解決済み】入力を数値で読み取るには?

2022-04-17 05:15:47

質問

なぜ xy の文字列をint型に置き換えるか?

(注意:Python 2.xでは raw_input() . Python 3.xでは input() . raw_input() にリネームされました。 input() Python 3.xでは)

play = True

while play:

    x = input("Enter a number: ")
    y = input("Enter a number: ")

    print(x + y)
    print(x - y)
    print(x * y)
    print(x / y)
    print(x % y)

    if input("Play again? ") == "no":
        play = False

解決方法は?

解決方法

Python3から。 input は文字列を返すので、明示的に int の場合は int このように

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

任意の基数の数字を受け取り、それを直接10進数に変換することができます。 int 関数は、次のようになります。

>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365

第2パラメータは、入力された数値の基数を伝え、内部でそれを理解し変換する。もし入力されたデータが間違っていた場合は ValueError .

>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '1234'

分数成分を持つことができる値の場合、型は次のようになります。 float ではなく int :

x = float(input("Enter a number:"))

Python 2 と 3 の違い

概要

  • Python 2の input 関数は受け取ったデータを評価し、暗黙のうちに整数に変換していましたが(この意味を理解するには次のセクションを読んでください)、Python 3 の input 関数はもうそのようなことはしません。
  • Python 2の相当するPython 3 の inputraw_input 関数を使用します。

Python 2.x

というユーザー入力を取得するための2つの関数がありました。 input raw_input . 両者の違いは raw_input はデータを評価せず、そのまま文字列で返します。しかし input は、入力されたものを評価し、評価結果を返します。例えば

>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)

データ 5 + 17 が評価され、その結果は 22 . この式が評価されるとき 5 + 17 ということは、2つの数字を足し算していることになるので、結果も同じ int 型になります。ですから、型変換は無料で行われ 22 の結果として返されます。 input に格納され data という変数があります。を考えることができます。 input として raw_input で構成される。 eval を呼び出します。

>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)

を使用する場合は、注意が必要です。 input を使うときになぜ注意しなければならないかについては、Python 2.x の この答え .

でも raw_input は入力を評価せず、そのまま文字列として返します。

>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)

Python 3.x

Python 3.xの input とPython 2.xの raw_input は類似しており raw_input はPython 3.xでは使用できません。

>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)