1

なぜこのエラーが発生するのかわかりません。私はさまざまなことを読んで試しましたが、うまくいきません。

def product():

    y, x= raw_input('Please enter two numbers: ')
    times = float(x) * int(y)
    print 'product is', times
product()

私は何を間違っていますか?どうもありがとう

4

2 に答える 2

4

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"
于 2012-08-01T18:28:22.603 に答える
0

@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
于 2012-08-01T18:33:11.987 に答える