【发布时间】:2014-02-18 17:52:47
【问题描述】:
如何检查字符串是否只包含数字?
我已经尝试过了。我想看看实现这一点的最简单方法。
import string
def main():
isbn = input("Enter your 10 digit ISBN number: ")
if len(isbn) == 10 and string.digits == True:
print ("Works")
else:
print("Error, 10 digit number was not inputted and/or letters were inputted.")
main()
if __name__ == "__main__":
main()
input("Press enter to exit: ")
【问题讨论】:
-
您的代码将始终返回
False,因为string.digits == True始终计算为False。 -
除了下面的答案,“非 Pythonic”方式是 if [x for x in isbn if x in '0123456789'];如果用户在 isbn 中放置分隔符,您可以扩展 - 将它们添加到列表中
-
如果您正在阅读 ISBN 编号,我建议您使用正则表达式。 ISBN 的长度可以是 10 位或 13 位,并且有额外的限制。这里有一个很好的正则表达式命令列表来匹配它们:regexlib.com/… 其中许多还可以让您正确阅读 ISBN 连字符,这将使人们更容易复制和粘贴。
-
@Kevin 而且,虽然 13 位 ISBN 确实只是数字,但 10 位 ISBN 可以将 X 作为最后一个字符。