python判断类型是float_验证浮点数据类型python

假设您在这里使用的是Python3.x,那么每一行:n1 = float(input ("Enter your first number: "))

…将引发一个ValueError,如果给定了不能转换为浮点的内容。

所以,与其验证然后转换,不如尝试转换,让转换器成为自己的验证器。

例如,不是这样:n1 = float(input ("Enter your first number: "))

n2 = float(input ("Enter your second number: "))

print ("Your result is: ", n1 + n2)

……你可以这样做:while True:

try:

n1 = float(input ("Enter your first number: "))

n2 = float(input ("Enter your second number: "))

except ValueError:

print("When I ask for a number, give me a number. Come on!")

else:

print ("Your result is: ", n1 + n2)

break

如果要分别检查每个值,只需在try上执行两个较小的循环,而不是一个较大的循环。

与其将代码复制粘贴6次,不如将其重构为一个函数。像这样的:def get_two_floats():

while True:

try:

n1 = float(input ("Enter your first number: "))

n2 = float(input ("Enter your second number: "))

except ValueError:

print("When I ask for a number, give me a number. Come on!")

else:

return n1, n2

或者,如果要分别验证每一个:def get_float():

while True:

try:

return float(input ("Enter your second number: "))

except ValueError:

print("When I ask for a number, give me a number. Come on!")

def get_two_floats();

return get_float(), get_float()

然后你可以这样做:if choice == "1":

n1, n2 = get_two_floats()

print ("Your result is: ", n1 + n2)

elif choice == "2":

n1, n2 = get_two_floats()

print ("Your result is: ", n1 - n2)

# etc.

顺便说一句:要捕获零除,不要处理所有异常,然后根据输入找出导致错误的原因,只需处理ZeroDivisionError。(一般来说,除非您要使用sys.exc_info()、re-raise或类似的方法,否则光的except:是个坏主意。使用except SpecificException:几乎总是更好的。或者,更常见的是,except SpecificException as e:,这样您就可以对e执行某些操作,比如在错误消息中输出print)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值