2017-08-10 86 views
0
def readVal(valType, requestMsg, errorMsg): 
    while True: 
     val = input(requestMsg) 
     try: 
      val = valType(Val) 
      return Val 
     except: 
      print(errorMsg) 

print (readVal(int, 'Enter int:', 'Not as int.')) 

我得到了下面的结果,当我输入4,5,2。异常输出是不正确的

输入INT:4未为INT。输入int:5不是int。输入int:2不是 int。

我无法得到正确答案,即4,5,2。我的程序出了什么问题?

回答

1

由于语法高亮显示,Valval不一样。这是一个导致NameError的错字。更大的问题是您的程序隐藏了您的NameError,因为您告诉它将任何异常(不管是什么原因造成的)转换为单个消息。

你可能打算赶上ValueError,其中int会抛出意想不到的输入。