有没有更好的方法来检查输入是否为数字?输入可以是int或float

1 python string raw-input

想知道是否有更好的方法来做到这一点.Python是我的第一个编程语言.

while True:
    amount_per_month = raw_input('\nWhat is the monthly cost?\n==> ')
    # seperate dollars and cents.
    amount_list = amount_per_month.split(".")
    # checking if int(str) is digit
    if len(amount_list) == 1 and amount_list[0].isdigit() == True:
        break
    # checking if float(str) is digit
    elif len(amount_list) == 2 and amount_list[0].isdigit() and amount_list[1].isdigit() == True:
        break
    else:
        raw_input('Only enter digits 0 - 9.  Press Enter to try again.')
        continue
Run Code Online (Sandbox Code Playgroud)

Jon*_*nts 7

float如果无法转换,只需尝试将其设为a 并处理抛出的异常.

try:
    amount_per_month = float( raw_input('What is the monthly cost?') )
except (ValueError, TypeError) as e:
    pass # wasn't valid
Run Code Online (Sandbox Code Playgroud)

TypeError这里是多余的,但如果转换是在其他Python对象(不仅仅是字符串)上运行,那么就需要捕获类似的东西float( [1, 2, 3] ).