我正在尝试制作一个可以执行5个进程的计算器,这些进程可以添加,减去,乘,除和用户输入的平方根值。所有我已经完成的,但是当试图创建值!= float和int时,当输入值为float和int时出现错误...我已经尝试了值== str然后出现错误,但即使这样也行不通......有人帮我吗?
e.g。
if value[0] != 'float' or value[0] != 'int' or value[1] != 'float' or value[1] != int':
return 'the input value is not correct
我已经尝试了上面的两个,它似乎不起作用。因为在程序中无法读取float,int和字符串。
如果我输入
calculator('+', 3, 4)
结果说错误.....
我有'打印类型(值[0],[1])的原因是为了确保它们的类型不断出现的错误。 `
def calculator(sym, *t):
value = tuple(t)
n = len(value)
print type(value[0])
print type(value[1])
if value[0] != 'float' or value[0] != 'int' or value[1] != 'float' or value[1] != int':
return 'the input value is not correct.'
else:
if sym == '+':
if len(value) != 2:
return 'The input value is not correct.'
else:
return float(value[0] + value[1])
elif sym == '-':
if len(value) != 2:
return 'The input value is not correct.'
else:
return float(value[0] - value[1])
elif sym == '/':
if len(value) != 2:
return 'The input value is not correct.'
elif value[1] == 0:
return 'The input value is not correct.'
else:
return float(value[0] / value[1])
elif sym == '*':
if len(value) != 2:
return 'The input value is not correct.'
else:
return float(value[0] * value[1])
elif sym == 'sqrt':
if len(value) != 1:
return 'The input value is not correct.'
elif value[0] < 0:
return 'The input value is not correct.'
else:
return value[0] ** 0.5
else:
return 'The input value is not correct.'
`
答案 0 :(得分:4)
使用isinstance
检查类型:
>>> isinstance(1, int)
True
>>> isinstance(1, float)
False
>>> isinstance('str', int)
False
您可以使用numbers.Number
来匹配任何类型的数字对象:
>>> import numbers
>>> isinstance(2, numbers.Number)
True
>>> isinstance(2.0, numbers.Number)
True
答案 1 :(得分:1)
您正在尝试将值与字符串进行比较,而不是类型。使用isinstance()
function来测试类型,它接受一个类型的元组:
if not (isinstance(value[0], (int, float)) and isinstance(value[1], (int, float))):
请注意,float
和int
是此处的名称,而不是字符串文字。它们指的是内置类型对象。