如何检查字符串开头是否有负数?

问题描述 投票:0回答:3

我正在尝试向该字符串添加一段代码以检查第一个位置是否有负数。如果代码识别出负数,则应返回“False”。我在用户输入命令中遇到 int 和 str 问题。

def is_number(S):
    #if s < 0:
        #print("False")
    #else:   
        try:
            float(s)
            return True
        except ValueError:
            pass
 
        try:
            import unicodedata
            unicodedata.numeric(s)
            return True
        except (TypeError, ValueError):
            pass
        return False
  
s = input()

is_number(s)

上面的代码应该接受数字和字母输入而不抛出错误。

python
3个回答
8
投票

这是你想要的吗?

def check_negative(s):
    try:
        f = float(s)
        if (f < 0):
            return True
        # Otherwise return false
        return False
    except ValueError:
        return False

不完全确定这是否是你想要的,也许你应该看看ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000的答案


7
投票

您可以用以下代码替换您的

is_number
函数:

def is_number(s):
    return str(s)[0] == '-' and len(str(s)) > 1

它是一个检查第一个字符是否为负号的函数,如果是,则返回true。否则,该数字不能为负数,则返回 false。但是,如果只有

-
符号,则两者都不是,并且将返回 false。它只使用一根线,而且简单得多。它也适用于字符串和浮点数。


0
投票

将您的输入放入一个循环中,在用户输入有效之前不会让用户继续前进。就目前情况而言,即使您的代码有效,如果响应无效,它也会失败并结束。

def is_positive_number(in_:str) -> bool:
    try   : out = float(in_) >= 0
    except: out = False
    return out

while not is_positive_number((num := input('Input a positive number:'))):
    print("You must input a positive number, try again.")
    
print(num)
© www.soinside.com 2019 - 2024. All rights reserved.