2016-08-26 9 views
0

ユーザが "done"と入力するまで繰り返し数値を読み取るプログラムを書く。 「完了」を入力すると、数値の合計、数、平均が印刷されます。ユーザーが数字以外を入力した場合は、tryとexceptを使用して間違いを検出し、エラーメッセージを出力して次の番号にスキップします。シンプルなpython反復練習。tryとexceptをつける。

これは私が持っているものです。

total = 0 
count = 0 
average = 0 
while True: 
    number = input("Enter a number:") 
    if number == "done": 
     break 
    try: 
     total += numbers 
     count += 1 
     average = total/len(number) 
    except: 
     print ("Invalid input") 
    continue 
print (total, count, average) 

これを実行すると、何らかの理由で常に無効な入力が発生します。私の例外部分は間違っていなければなりません。

編集: これは私が今使っているものです。しかし、私は、数字以外の場合は試してみてください。

total = 0 
count = 0 
average = 0 
while True: 
    number = input("Enter a number:") 
    if number == "done": 
     break 
    total += float(number) 
    count += 1 
    average = total/count 
print (total, count, average) 

私はそれを持っていると思いますか!

total = 0 
count = 0 
average = 0 
while True: 
    number = input("Enter a number:") 
    try: 
     if number == "done": 
      break 
     total += float(number) 
     count += 1 
     average = total/count 
    except: 
     print ("Invalid input") 
print ("total:", total, "count:", count, "average:", average) 

時間がかかりそうだったら私は慌てるべきですか? これは私の最初のプログラミング言語ではありませんが、それはしばらくしています。あなたの入力を使用しようとすると

+0

これはPython 2またはPython 3ですか? –

+0

exceptブロックでキャッチする例外は何ですか? try-exceptを削除し、実際にどのようなエラーが発生したかを確認します。 – Daniel

+0

ねえみんな。これはPython 3です。@ダニエル、私は今それを試してみましょう。私はそれが数字を入力していない場合、キャッチしようとしています。 –

答えて

0

問題がある:

try: 
    total += numbers 

まず、何の価値番号はありません。変数は単数であり、複数ではありません。次に、テキスト入力を数値に変換する必要があります。これを試してください:

try: 
    total += int(number) 
+0

ええ、私はそれを持っています。 :) –

+0

良い。元のコードは毎回例外を発生させます:初期化の前に変数の値を使用しようとします。あなたはまだ入力量のカウントに問題がありますが、それは別の問題です。 – Prune

+0

私はすべてを持っていると思う。 –

0

数値がintのときはlen(数値)がないためです。 lenはリスト/配列の長さを見つけるためのものです。 try/except/continueをコメントアウトすることで、自分自身でテストすることができます。私は以下のコードは、あなたが何をしているものだと思う?

total = 0 
count = 0 
average = 0 
while True: 
    number = input("Enter a number:") 
    if number == "done": 
     break 
    try: 
     total += number 
     count += 1 
     average = total/count 
    except: 
     print ("Invalid input") 
    continue 
print (total, count, average) 

メモまだいくつかの問題があります。たとえば、文字通りエラーを表示しないように入力ボックスに「done」と入力する必要がありますが、平均でcountの代わりにlen(number)を使用していたため、これは最初の問題を修正します。合計+ =数があることにも注意してください。あなたの変数が数字ではないとき。変数名/使用法に注意してください。

+0

私はそれを得たと思う。 –

0

ソリューション...あなたのコードで

total = 0 
count = 0 
average = 0 
while True: 
    number = input("Enter a number:") 
    if number == "done": 
     break 
    else: 
     try: 
      total += int(number) 
      count += 1 
      average = total/count 
     except ValueError as ex: 
      print ("Invalid input") 
      print('"%s" cannot be converted to an int: %s' % (number, ex)) 
print (total, count, average) 

問題:

  • 合計+ =番号#番号は存在しません。 数字
  • len(数字)#数字は文字列です。あなたはを行わないされている場合
  • を数える必要平均ために、他のプロセスそれ
  • 使用ははint型に変換するときに問題をキャッチするとValueErrorを除いて...してみてください。
  • また、try ... except ValueErrorをexとして使用すると、エラーメッセージをより分かりやすくすることができます。
+0

こんにちは。私が書いたことを確認できますか?私はそれが正しいと思う。 –

+0

OKです。慌てないでください。心を失うことはありません! –

+0

:)ありがとう! 10文字 –

関連する問題