我正在尝试向该字符串添加一段代码以检查第一个位置是否有负数。如果代码识别出负数,则应返回“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)
上面的代码应该接受数字和字母输入而不抛出错误。
这是你想要的吗?
def check_negative(s):
try:
f = float(s)
if (f < 0):
return True
# Otherwise return false
return False
except ValueError:
return False
不完全确定这是否是你想要的,也许你应该看看ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000的答案
您可以用以下代码替换您的
is_number
函数:
def is_number(s):
return str(s)[0] == '-' and len(str(s)) > 1
它是一个检查第一个字符是否为负号的函数,如果是,则返回true。否则,该数字不能为负数,则返回 false。但是,如果只有
-
符号,则两者都不是,并且将返回 false。它只使用一根线,而且简单得多。它也适用于字符串和浮点数。
将您的输入放入一个循环中,在用户输入有效之前不会让用户继续前进。就目前情况而言,即使您的代码有效,如果响应无效,它也会失败并结束。
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)