简单 Python 输入错误

Simple Python input error

我正在尝试编写代码来编辑列表并使其成为回文。

一切正常,除了我的输入仍然给我一个错误。当我在 get_number_2 中输入一个非整数时,它崩溃了。

def get_number():
    num = raw_input("Please enter number between 100,000 and 1,000,0000: ")
    if not num.isdigit():
        print "---------------------------"
        print "Invalid input: numbers only"
        print "---------------------------"
        my_main()
    else:
        return num

def get_number_2(n):
    num = input("Please confirm the number you have entered: ")
    if num != int(n):
        print "--------------------"
        print "Entries do not match"
        print "--------------------"
        my_main()
    else:
        return num

我将来自 get_number_2 的输入用于其余代码,因为当我检查它是否介于两个数字之间时 get_number 不起作用。

有什么方法可以验证 get_number_2 中的输入是否为整数,以便我可以摆脱 get_number

您不能执行 num != int(n),因为它会尝试调用 int(n),如果 n 实际上不是整数,则调用无效。

正确的方法是使用 tryexcept

try:
  n = int(n)
except ValueError:
  print 'Entry is not an integer.'
  #handle this in some way

编辑:同样在 Python 2.x 中,请使用 raw_input() 而不是 input()。如果您不知道它在做什么,input() 会给出非常奇怪的结果。

您还应该使用 raw_inputint(num):

def get_number_2(n):
    num = raw_input("Please confirm the number you have entered: ")
    if not num.isdigit() or int(num) != n:
        print "--------------------"
        print "Entries do not match"
        print "--------------------"
        my_main()
    else:
        return int(num)

备注

  • 我假设参数 n 是一个整数,或者要检查这一点,您可以将 if 更改为:if not num.isdigit() or not n.isdigit() or int(num) != int(n).
  • 通过使用 isdigit 我们在真正将其转换为 int 之前检查它是否为整数。

编写处理异常的程序。如果用户输入无效整数,它会抛出 ValueError 异常:

try:
    a = int(b)
except ValueError:
    print "Unable to interpret your input as a number"

您必须像这样更新您的问题:

def get_number_2(n):
    num = input("Please confirm the number you have entered: ")
    try:
        if num != int(n):
            print "--------------------"
            print "Entries do not match"
            print "--------------------"
            my_main()
        else:
            return num
    except ValueError:
        print "Unable to interpret your input as a number"
from operator import attrgetter
num0 = input()
if not attrgetter('isdigit')(num0)():
    print("that's not a number")