なぜこのエラーが発生するのかわかりません。私はさまざまなことを読んで試しましたが、うまくいきません。
def product():
y, x= raw_input('Please enter two numbers: ')
times = float(x) * int(y)
print 'product is', times
product()
私は何を間違っていますか?どうもありがとう
なぜこのエラーが発生するのかわかりません。私はさまざまなことを読んで試しましたが、うまくいきません。
def product():
y, x= raw_input('Please enter two numbers: ')
times = float(x) * int(y)
print 'product is', times
product()
私は何を間違っていますか?どうもありがとう
raw_input
単一の文字列を返します。実行中に引数を解凍するには、2つのものを返す必要があります。
あなたはこのようなことをすることができます:
y, x = raw_input('Please enter two numbers (separated by whitespace): ').split(None,1)
ユーザーが「213」のような文字列を入力できるため、これはまだ少し壊れやすいことに注意してください。解凍は例外なく機能しますが、「13」を整数に変換しようとするとチョークします。これらのことを行う最も堅牢な方法は、try/except
ブロックを使用することです。これが私がそれをする方法です。
while True: #try to get 2 numbers forever.
try:
y, x = raw_input("2 numbers please (integer, float): ").split()
y = int(y)
x = float(x)
break #got 2 numbers, we can stop trying and do something useful with them.
except ValueError:
print "Oops, that wasn't an integer followed by a float. Try again"
@mgilsonの答えは正しいです。ただし、誰かが 3 つの数字を入力した場合は、同じValueError
例外が発生します。
したがって、この代替バージョンは次のことをキャッチします。
numbers = raw_input('Please enter only two numbers separated by a space: ').split()
if len(numbers) > 2:
print 'Sorry, you must enter only two numbers!'
else:
x,y = numbers