以下のコードでは、なぜx
とy
という文字列が整数ではなくなっているのでしょうか。
(注:Python 2.xではraw_input()
を使用します。Python3.xではinput()
を使用します。Python3.xではraw_input()
がinput()
に名前変更されました。)
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
_ tldr _
input
関数で受け取ったデータを評価しませんが、Python 2のinput
関数は評価します(その意味を理解するために次のセクションを読んでください)。input
と同等のものはraw_input
関数です。Python 2.x
input
および raw_input
と呼ばれる、ユーザー入力を取得するための2つの関数がありました。違いは、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
型になるでしょう。そのため、型変換は無料で行われ、input
の結果として22
が返され、data
変数に格納されます。 input
は、 eval
呼び出しで構成されたraw_input
と考えることができます。
>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)
注: Python 2.xでinput
を使用している場合は注意が必要です。私はなぜそれを使うときに注意を払うべきかを この答え で説明しました。
しかし、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'>)
解決策
あなたの質問に答えるために、Python 3.xはデータ型を評価して変換しないので、あなたは明示的にint
sに変換しなければなりません、 int
のように、
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
このように、任意の基数を受け入れて、int
関数を使用してそれらを直接基数10に変換することができます。
>>> 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:"))
それとは別に、あなたのプログラムはこのように少し変更することができます
while True:
...
...
if input("Play again? ") == "no":
break
play
とwhile True
を使うことでbreak
変数を取り除くことができます。
_ ps _ :Pythonは行の終わりに;
を期待しません:)
1行に複数の整数がある場合は、 map が良いでしょう。
arr = map(int, raw_input().split())
数がすでにわかっている場合は(2つの整数のように)、
num1, num2 = map(int, raw_input().split())
input()
(Python 3)とraw_input()
(Python 2) 常に 文字列を返します。 int()
を使って結果を明示的に整数に変換します。
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
利点:Pythonではセミコロンは必要ありません。
複数の質問では、1行に複数の整数を入力する必要があります。最善の方法は、数字の文字列全体を1行に入力してから整数に分割することです。
p=raw_input()
p=p.split()
for i in p:
a.append(int(i))
整数に変換する:
my_number = int(input("enter the number"))
浮動小数点数についても同様です。
my_decimalnumber = float(input("enter the number"))
Python 3.x
pythonでint
を入力として受け取る:私たちは、以下を使って単純なstring
入力を取ります。
input()
今度はint
を入力として使います。それで、我々はこのstring
を単にint
に型キャストします:
int(input())
Python 3.x では、デフォルトでinput関数は文字列フォーマットで入力を取ります。それを整数に変換するにはint(input())
を含める必要があります。
x=int(input("Enter the number"))
Python 3.xには、常にstringを返すinput()
関数があります。int
に変換する必要があります。
python 3.x
x = int(input("Enter a number: "))
y = int(input("Enter a number: "))
python 2.x
Python 2.xでは、raw_input()
とinput()
関数は常に文字列を返すので、それらもintに変換する必要があります。
x = int(raw_input("Enter a number: "))
y = int(input("Enter a number: "))
def dbz():
try:
r = raw_input("Enter number:")
if r.isdigit():
i = int(raw_input("Enter divident:"))
d = int(r)/i
print "O/p is -:",d
else:
print "Not a number"
except Exception ,e:
print "Program halted incorrect data entered",type(e)
dbz()
Or
num = input("Enter Number:")#"input" will accept only numbers
CodeChef の問題を解決しながら整数入力を取るという問題に遭遇しました。ここでは、スペースで区切られた2つの整数が1行から読み取られます。
int(input())
は単一の整数で十分ですが、私は2つの整数を入力する直接的な方法を見つけませんでした。私はこれを試しました:
num = input()
num1 = 0
num2 = 0
for i in range(len(num)):
if num[i] == ' ':
break
num1 = int(num[:i])
num2 = int(num[i+1:])
今度はnum1とnum2を整数として使います。お役に立てれば。
play = True
while play:
#you can simply contain the input function inside an int function i.e int(input(""))
#This will only accept int inputs
# and can also convert any variable to 'int' form
x = int(input("Enter a number: "))
y = int(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
n=int(input())
for i in range(n):
n=input()
n=int(n)
arr1=list(map(int,input().split()))
forループは 'n'回実行されます。 2番目の 'n'は配列の長さです。最後のステートメントは整数をリストにマップし、スペースで区切られた形式で入力を受け取ります。 forループの最後に配列を返すこともできます。
あなたの例では、int(input(...))
がどんな場合でもうまくいくが、python-future
の builtins.input
はあなたのコードがPython 2と3 の両方で動作することを確かめ、はPython2のデフォルトのinput
を無効にする。入力データ型を「賢く」しようとする(builtins.input
は基本的にはraw_input
のように振る舞うだけです)。
はい、python 3.xでは、raw_input
はinput
に置き換えられました。 input
の古い動作に戻すには、次のようにします。
eval(input("Enter a number: "))
これは入力された入力が整数であることをpythonに知らせます
play = True
while play:
x = input("Enter a number: ")
y = input("Enter a number: ")
print(int(x) + int(y))
print(int(x) - int(y))
print(int(x) * int(y))
print(int(x) / int(y))
print(int(x) % int(y))
if input("Play again? ") == "no":
play = False
これにより、変数x
とy
は整数であることがわかり、したがって整数のように使用されます。
小数を使用できるようにしたい場合は、int
をfloat
に変更します。
最初の関数の出力:
print(int(x) + int(y))
x = 3
とy = 7
は10
を返しました。
入力データの場合は、常に文字列として扱われます。だからあなたは明示的にIntでそれを変換する必要があります。あなたは以下のようにコードを書くべきです:
play = True
while play:
x = (input("Enter a number: ")
y = input("Enter a number: ")
print(int(x) + int(y))
print(int(x) - int(y))
print(int(x) * int(y))
print(int(x) / int(y))
print(int(x) % int(y))
if input("Play again? ") == "no":
play = False `
intを使って入力を整数に解析する
x = int(input("What is x?"))
多くの人がint(input("etc"))
をやりたいのですが、もしあなたが文字列を入れると、それはエラーを発生させます。
私がやりたいのはこれです:
s = input("integer: ")
integer = int(s)
どんな目的にも整数を使ってください。
さらに、もしsが文字列なら、これはエラーを起こさない。
少なくとも、すぐではありません。