How do I check if input is a number in Python?

南笙酒味 提交于 2019-11-30 06:02:54

问题


I have a Python script which converts a decimal number into a binary one and this obviously uses their input.

I would like to have the script validate that the input is a number and not anything else which will stop the script.

I have tried an if/else statement but I don't really know how to go about it. I have tried if decimal.isint(): and if decimal.isalpha(): but they just throw up errors when I enter a string.

print("Welcome to the Decimal to Binary converter!")
while True:
    print("Type a decimal number you wish to convert:")
    decimal = int(input())
    if decimal.isint():
        binary = bin(decimal)[2:]
        print(binary)
    else:
        print("Please enter a number.")

Without the if/else statement, the code works just fine and does its job.


回答1:


If the int() call succeeded, decimal is already a number. You can only call .isdigit() (the correct name) on a string:

decimal = input()
if decimal.isdigit():
    decimal = int(decimal)

The alternative is to use exception handling; if a ValueError is thrown, the input was not a number:

while True:
    print("Type a decimal number you wish to convert:")
    try:
        decimal = int(input())
    except ValueError:
        print("Please enter a number.")
        continue

    binary = bin(decimal)[2:]

Instead of using the bin() function and removing the starting 0b, you could also use the format() function, using the 'b' format, to format an integer as a binary string, without the leading text:

>>> format(10, 'b')
'1010'

The format() function makes it easy to add leading zeros:

>>> format(10, '08b')
'00001010'


来源:https://stackoverflow.com/questions/20095244/how-do-i-check-if-input-is-a-number-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!