问题描述
我正在编写仅应使用def()的代码。 input()不能在def()内部使用。传递数值后就可以了。提供字符串(例如,五,十等)时,它将返回NameError。如何使用try和except解决此问题。
def num(n):
try:
return int(n)
except NameError:
print('Error: Enter numeric nalue')
return
num(Five)
输出:NameError: name 'Five' is not defined
我正在使用Anaconda 2020.2(python3.7.6 64位)
解决方法
两个问题:
-
当您尝试使用字符串值测试例程时,您正在尝试对不带引号的字符串常量进行编码,因此它试图查找不存在的变量
Five
,因此NameError
。您需要用引号引起来(例如'Five'
)。 -
在函数内,对于非数字数据,要查找的相关异常是
ValueError
。
已更正以下示例:
def num(n):
try:
return int(n)
except ValueError:
print('Error: Enter numeric value')
return
print(num('Five'))
,
在下面
(这个想法是从函数调用中返回一个元组。第一个tuple元素是一个布尔值,告诉我们是否有一个有效的int。第二个tuple元素可以是实际的int或可以解释为什么不能将输入转换为int的字符串)
def to_int(val):
try:
result = int(val)
return True,result
except ValueError:
return False,'{} is not a valid integer'.format(val)
print(to_int(7))
print(to_int('ttt'))
输出
(True,7)
(False,'ttt is not a valid integer')
,
尝试一下:
def num(n):
try :
return int(n)
except:
raise NameError("Please provide an integer value")
num('five')