【发布时间】:2021-03-31 10:15:01
【问题描述】:
在下面的代码中,is_number 对于值 "foo" 是 False,但是对于该字符串仍然会打印 is a number。为什么?我该如何解决?
def string_is_number(a_string):
pattern = re.compile(r'[0-9]+')
if pattern.search(a_string):
return("True")
else:
return("False")
for value in 42, 0.5, "foo":
the_string = str(value)
is_number = string_is_number(the_string)
print(the_string, is_number)
if is_number:
print(the_string, "is a number")
输出:
42 True
42 is a number
0.5 True
0.5 is a number
foo False
foo is a number
【问题讨论】:
-
该函数返回一个字符串,而不是布尔值
-
你的正则表达式也匹配“lkjh456uzt”
-
如果字符串中有任何数字,则不要使用返回“True”的
string_is_number,而是考虑完全转储该函数并仅使用the_string.isdigit()。 -
您的“是一个数字”检查需要多准确? 6,381 是写数字的正常方式。但是6,33,1呢?那是一个数字吗? 12:22?
标签: python if-statement boolean boolean-expression