如何在python中使用isdigit识别运算符?

时间:2019-05-21 06:07:48

标签: python-3.x

我正在编写一个程序来检查用户输入的输入是正还是负。

我已经使用isdigit来打印“错误的选择/输入”。如果用户输入了一个字符串。

程序运行正常...但是一个数为负的程序段不起作用。

每当我给出负值时,它都会显示错误的选择,因为isdigit会检查字符串中的整数而不是符号。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您可以先检查第一个字符,如果它是减号,则仅将isdigit()应用于字符串的其余部分,即:

# py2/py3 compat
try:
    # py2
    input = raw_input
except NameError:
    # py3
    pass

while True:
    strval = input("please input a number:").strip()
    if strval.startswith("-"):
        op, strval = strval[0], strval[1:]
    else:
        op = "+"
    if not strval.isdigit():
        print("'{}' is not a valid number".format(strval))
        continue
    # now do something with strval and op

但是尝试将strval传递到int()会更简单,如果字符串不是整数的有效表示形式,它将返回整数或引发ValueError

# py2/py3 compat
try:
    # py2
    input = raw_input
except NameError:
    # py3
    pass

while True:
    strval = input("please input a number:")
    try:
        intval = int(strval.strip())
    except ValueError:
        print("'{}' is not a valid number".format(strval))
        continue
   # now do something with intval