私は例外処理/エラートラップを実験していて、なぜ以下のコードが機能しないのか疑問に思っていました。私はPython2.7を使用しています。との違いを理解input()
し、Python3.0で名前が変更されたraw_input()
ことを理解しています。整数を入力すると、文字列を入力するまでコードがループし続けます。文字列を入力すると、以下のエラーメッセージが表示されます。これを回避する方法はありますか、それともこれはそれらのPythonの癖の1つにすぎませんか?raw_input()
input()
File "<some_directory_path_goes_here>", line 30, in <module>
enterAge = input('Enter your age as an integer: ')
File "<string>", line 1, in <module>
NameError: name '<user_entered_string_goes_here>' is not defined
Python 2.7では、コードは引き続き機能するはずです。
from types import IntType
age = 0
while True:
enterAge = input('Enter your age as an integer: ')
try:
if type(enterAge) is IntType:
num = enterAge
age = age + num
print str(age) + ' is old!'
except TypeError:
print 'You did\'t enter an integer'
break