我一直在尝试制作圆形区域计算器,并且我已经掌握了基础知识。但是如果用户输入类似5m
的内容,那么我会看到错误。我想返回"输入数字"而不是退出错误。这是我的代码。
from math import pi
r = float(input("Input the radius of the circle : "))
print("The area of the circle with radius " + str(r) + " is: " + str(pi * r**2))
if r==(str):
print("Enter a Number")
答案 0 :(得分:0)
这里
if r==(str):
不符合您的期望。
您希望使用string
模块进行此检查(请注意,这应该在尝试将输入转换为float之前完成):
import string
if set(r).issubset(string.digits)
或者对于此检查,字符串对象上有一个方法:
r.isdigit()
但还有更好的方法:
from math import pi
try:
radius = float(input("Input the radius of the circle : "))
except ValueError:
print("Invalid input, enter a Number!")
else:
print("The area of the circle with radius " + str(r) + " is: " + str(pi * r**2))
这显示了如何处理无效输入。您可能希望将其置于循环中,直到获得有效输入。
答案 1 :(得分:-1)
您可以反复询问,直到输入可转换为浮点数的字符串。您可以通过捕获ValueError
来检测将字符串转换为float的失败,这是类型转换失败时抛出的异常。
while True:
try:
r = float(input("Input the radius of the circle : "))
break
except ValueError:
pass
执行此操作代替包含input
调用的当前行,并取消r == (str)
测试,该测试实际上并没有做任何接近您的意图。
另请注意,如果您使用的是Python2,则需要raw_input
函数而不是input
。