Search code examples
pythonstringnumbers

How do you check in Python whether a string contains only numbers?


How do you check whether a string contains only numbers?

I've given it a go here. I'd like to see the simplest way to accomplish this.

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: ")

Solution

  • You'll want to use the isdigit method on your str object:

    if len(isbn) == 10 and isbn.isdigit():
    

    From the isdigit documentation:

    str.isdigit()

    Return True if all characters in the string are digits and there is at least one character, False otherwise. Digits include decimal characters and digits that need special handling, such as the compatibility superscript digits. This covers digits which cannot be used to form numbers in base 10, like the Kharosthi numbers. Formally, a digit is a character that has the property value Numeric_Type=Digit or Numeric_Type=Decimal.