Python - 如何测试用户输入是否为十进制数

4

我正在编写一个程序,需要检查用户输入是否为十进制数(用户输入必须是十进制数),我想知道如何测试变量是否只包含十进制数。

谢谢, Jarvey


1
如果您想知道您所测试的数字是否具有小数点右侧的值,那么您可以使用模运算1,如果答案不为0,则是一个小数。5%1 == 05.25%1 = 0.25 - jerblack
6个回答

5

您也可以使用Try/Except来检查变量是否为整数:

try:    
    val = int(userInput) 
except ValueError:    
    print("That's not an int!")

或者浮点数:
try:    
    val = float(userInput) 
except ValueError:    
    print("That's not an float!")

嗨,感谢您的帮助,这个似乎可以工作,但它也允许字符,我想要的是浮点数,您有任何想法如何阻止字符被接受吗? - hpj
你的意思是什么?如果我输入的不是数字,它会引发异常。因此,在这种情况下,它会打印出:这不是一个浮点数! - Stan Vanhoorn

4

您可以使用float.is_integer()方法。
例子: data = float(input("请输入数字"))

if data.is_integer():
  print (str(int(data)) + ' is an integer')
else:
  print (str(data) + ' is not an integer')

2
我在 Python 中找到了一种方法,但它无法在新窗口/文件中运行。
>>> variable=5.5
>>> isinstance(variable, float)
True

>>> variable=5
>>> isinstance(variable, float)
False

我希望这有所帮助。

1
你可以使用 isinstance
if isinstance(var, float):
    ...

当我这样做时,它不允许输入小数,但允许文本。有什么方法可以只允许输入像“0.2”或“1.5”这样的小数,而拒绝像“hello”这样的输入? - hpj

1
你可以通过将其转换为整数来检查:

    try:
       val = int(userInput)
    except ValueError:
       print("That's not an int!")

谢谢,问题已解决 :) - hpj

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接