3

入力エラーをキャッチしようとしています - 唯一の有効な入力は整数です。

非整数が入力された場合は、func の先頭に戻って再試行します。

def setItorator():
 try:
  iterationCap = int(raw_input("Please enter the number of nibbles you want to make: "))
  print "You will make", iterationCap, "nibbles per file"
 except ValueError:
  print "You did not enter a valid integer, please try again"
  setItorator()
 return iterationCap 

if __name__ == "__main__":
 iterationCap = setItorator()

このメソッドは、最初の入力が有効な場合に機能し、無効な入力が行われた場合は関数の先頭に戻りますが、正しい有効な値をメイン関数に戻していないようです。sub func をチェックインして、正しい変数と正しい型 (int) を認識し、表示されるようにしましたが、エラーが発生しました。

UnboundLocalError: local variable 'iterationCap' referenced before assignment  

最初の入力が有効な場合 (例: "10")、最初の入力が無効な場合 (例: "a" の後に "10") のみ、このエラーは表示されません。

4

2 に答える 2

3

このようなことを試してください。

while True:
   try:
    i = int(raw_input("Enter value "))
    break
   except ValueError:
    print "Bad input"

print "Value is ",i

現在のアプローチでは、エラーごとに関数が再帰的に呼び出されますが、これはお勧めできません。エラーは、例外ハンドラー ブロック内で を定義していないためですiterationCap

于 2012-05-16T08:30:10.273 に答える
2

return setItorator()except ステートメントで行う必要があります。現時点では、関数を呼び出して出力を無視しているだけです。

于 2012-05-16T08:29:31.247 に答える