如果我没有';t获取浮点作为输入 hours,pay=map(浮动,输入(“输入小时数和工资/小时,用空格条分隔:”).split() def computepay(小时,付款): 如果小时数>40: 报税表((工资*40)+(((小时-40)/2)+(小时-40))*工资) 如果你想问Python:“这是一个float?”或者更一般地说:“这是类float的实例吗?”
给你:如果我没有';t获取浮点作为输入 hours,pay=map(浮动,输入(“输入小时数和工资/小时,用空格条分隔:”).split() def computepay(小时,付款): 如果小时数>40: 报税表((工资*40)+(((小时-40)/2)+(小时-40))*工资) 如果你想问Python:“这是一个float?”或者更一般地说:“这是类float的实例吗?”,python,Python,给你: hours,pay=map(float,input("Enter the numbers of hours and the salary/hour,separated by a space bar:").split()) def computepay(hours,pay): if hours >40: return ((pay*40)+((((hours-40)/2)+(hours-40))*pay)) if hours <=40:
hours,pay=map(float,input("Enter the numbers of hours and the salary/hour,separated by a space bar:").split())
def computepay(hours,pay):
if hours >40:
return ((pay*40)+((((hours-40)/2)+(hours-40))*pay))
if hours <=40:
return int(hours*pay)
if hours and pay != float:
print ("to bad")
print(computepay(hours,pay))
由于您正在使用
float()
函数将输入转换为浮点值,因此在以后计算它们时,它们的类型总是正确的,当然,除非输入无效
在这种情况下,将引发异常。让我们在Python shell中尝试一下:
if isinstance(hours, float) and isinstance(pay, float):
尝试使用
type
函数,该函数用于获取对象的类型,并可用于按对象的类型比较对象
示例:
values = input("Enter bla bla...").split()
try:
hours, pay = map(float, values)
except ValueError:
print "Wrong format!"
下面是您编辑的代码,使用type函数将变量pay
和hours
的类型与float
类进行比较:
type("String") == str (True)
type(1) != float (True)
type(0.3) == float (False)
hours,pay=map(浮动,输入(“输入小时数和工资/小时,用空格条分隔:”).split()
def computepay(小时,付款):
如果小时数>40:
报税表((工资*40)+(((小时-40)/2)+(小时-40))*工资)
如果工时hours
和pay
总是float
s,因为您使用map(float…)
。您需要首先捕获(try except)输入的结果以及转换为浮点值的结果,而不是以后。是的,但我认为OP希望检查浮点值,以防从其他地方调用例程。是否有任何东西阻止您使用try except()?比如:try:except ValueError:print我不知道为什么,但是没有答案有效……你能把解决方案放到我的实际代码中,这样我就可以在上下文中看到它吗?“没有答案有效”太模糊了:发生了什么事?另外,您是要检查input()
的结果,还是只检查函数内部的结果?你的问题不清楚。这通常是明确建议反对的。您想使用isinstance
。但更好的是,您应该使用异常处理。Python是关于duck-typing的。是的,你是对的,我将研究如何将自己从type函数更新为isinstance。。。我之所以使用它,是因为我习惯于使用shorten函数,比如:P@juanpa.arrivillaga
type("String") == str (True)
type(1) != float (True)
type(0.3) == float (False)
hours,pay=map(float,input("Enter the numbers of hours and the salary/hour,separated by a space bar:").split())
def computepay(hours,pay):
if hours >40:
return ((pay*40)+((((hours-40)/2)+(hours-40))*pay))
if hours <=40:
return int(hours*pay)
if type(hours) != float and type(pay) != float:
print ("to bad")
print(computepay(hours,pay))