似乎我们提出了很多要求,但我们正在寻求对输入的正整数或浮点数进行简短验证。下面的代码拒绝否定,文本和空条目-是的!它接受int为有效,但是为什么不通过1.1这样的输入呢? (看似正数输入)我们希望正1和1.1的输入通过。没有两个单独的块(包括try / catch),有没有简单的方法?
$ openstack
Exception raised: When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject". See: https://bugzilla.gnome.org/show_bug.cgi?id=709183
答案 0 :(得分:1)
isnumeric()
正在检查所有字符是否都是数字(例如1、2、100 ...)。
如果您输入“。”在输入中,它既不算作数字字符,也不算作'-',因此它返回False
。
我要做的是尝试将输入转换为 float ,并解决输入错误的问题。
您本可以使用isinstance()
,但是为此您需要将输入转换为 string 以外的其他内容。
我想到了这个
message = "What is the cost of your book? >>"
while True:
bookPrice = input(message)
try:
bookPrice = float(bookPrice)
if bookPrice <= 0:
message = "Use whole # or decimal, no spaces: >> "
continue
currect_user_input = True
except ValueError:
currect_user_input = False
message = "Use whole # or decimal, no spaces: >> "
if currect_user_input:
print("Your book price is ${0:<.2f}.".format(bookPrice))
break