简单 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
实际上不是整数,则调用无效。
正确的方法是使用 try
和 except
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_input
和 int(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")
我正在尝试编写代码来编辑列表并使其成为回文。
一切正常,除了我的输入仍然给我一个错误。当我在 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
实际上不是整数,则调用无效。
正确的方法是使用 try
和 except
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_input
和 int(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")