我正在编写一个程序来检查用户输入的输入是正还是负。
我已经使用isdigit来打印“错误的选择/输入”。如果用户输入了一个字符串。
程序运行正常...但是一个数为负的程序段不起作用。
每当我给出负值时,它都会显示错误的选择,因为isdigit会检查字符串中的整数而不是符号。
我该如何解决?
答案 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