我的程序无法将.isdigit识别为True

时间:2019-05-01 20:15:16

标签: python boolean

在我的程序中,我要检查笔划符号是否为公共数字(0-9)

.isnumeral的工作方式很奇怪,因为它把字母(a-z)视为True,所以我潜入其中,发现.isnumeral实际上并不是专门搜索我想要的东西-数字。通过手册我发现了.isdigit但:

dna = 'a3'
start = 0
end = 1
if dna[end].isdigit is True:
    print('Yes')

它不起作用,并且“是”未按预期显示。

4 个答案:

答案 0 :(得分:4)

if dna[end].isdigit is True:

isdigit()是一个函数,而不是属性。

您忘记了最后的括号,因此您指的是函数对象本身,而不是调用函数的 result

答案 1 :(得分:1)

您实际上必须调用isdigit()方法:

dna = 'a3'
start = 0
end = 1
if dna[end].isdigit():
    print('Yes')

这给出了您所期望的答案,对。

如果您执行dna[end].isdigit,它只会提供一个不会求值的对象<built-in method isdigit of str object at address>

答案 2 :(得分:1)

在这种情况下,

dna[end].isdigit是指str.isdigit函数。 如果您进行print(type(dna[end].isdigit)),您将会明白我的意思。

要调用该函数,请添加if dna[end].isdigit():这样的括号。

答案 3 :(得分:1)

两件事:

  • 无需与true进行比较,只需使用isdigit()的结果

  • isdigit()是一个函数,其本身是 truthy ,但不等同于True

查看Python docs以获得更多信息。

相关问题