Python if / else语句包含数学

时间:2018-02-22 03:49:32

标签: python if-statement

我一直在尝试制作圆形区域计算器,并且我已经掌握了基础知识。但是如果用户输入类似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")

2 个答案:

答案 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