Python错误处理帮助

Python错误处理帮助,python,error-handling,Python,Error Handling,下面是一个简单的代码片段 a = raw_input("Enter a number: ") 如何编写异常,以便在输入字符串时,再次提示用户重试,直到输入整数为止 换言之,继续执行此操作,直到输入整数为止: if a.isdigit == False: raw_input("Try again: ") 您可以使用while循环: 如果您想要一条错误消息,它会变成: a = raw_input("Enter a number: ") while not a.isdigit():

下面是一个简单的代码片段

a = raw_input("Enter a number: ")
如何编写异常,以便在输入字符串时,再次提示用户重试,直到输入整数为止

换言之,继续执行此操作,直到输入整数为止:

if a.isdigit == False:
    raw_input("Try again: ") 
您可以使用while循环:

如果您想要一条错误消息,它会变成:

a = raw_input("Enter a number: ")
while not a.isdigit():
    a = raw_input("Try again: ")
a = raw_input("Enter a number: ")
while (not a.isdigit()):
    a = raw_input("Try again: ")
您可以使用while循环:

如果您想要一条错误消息,它会变成:

a = raw_input("Enter a number: ")
while not a.isdigit():
    a = raw_input("Try again: ")
a = raw_input("Enter a number: ")
while (not a.isdigit()):
    a = raw_input("Try again: ")

实现这一点的常用方法是使用int和异常处理:

>>> n = None
>>> while n is None:
...    a = raw_input("Enter a number: ")
...    try:
...      n = int(a)
...    except ValueError:
...      print "Not a number."
...
Enter a number: abc
Not a number.
Enter a number: cauliflowers are my favourite vegetable
Not a number.
Enter a number: 12
>>>
但是,如果希望避免异常处理,可以采用以下方法。请注意,它不接受负整数,只接受自然数0、1、2、…、N:

以这种方式处理负整数变得更加复杂,需要三种情况,一种是空字符串,一种是负整数,另一种是自然数:

>>> while True:
...   a = raw_input("Enter a number: ")
...   if len(a) > 0 and ((a[0] == '-' and a[1:].isdigit()) or a.isdigit()):
...     break
...   print "Not a number."
...
Enter a number: Celery stinks.
Not a number.
Enter a number:
Not a number.
Enter a number: -
Not a number.
Enter a number: 1
>>>

实现这一点的常用方法是使用int和异常处理:

>>> n = None
>>> while n is None:
...    a = raw_input("Enter a number: ")
...    try:
...      n = int(a)
...    except ValueError:
...      print "Not a number."
...
Enter a number: abc
Not a number.
Enter a number: cauliflowers are my favourite vegetable
Not a number.
Enter a number: 12
>>>
但是,如果希望避免异常处理,可以采用以下方法。请注意,它不接受负整数,只接受自然数0、1、2、…、N:

以这种方式处理负整数变得更加复杂,需要三种情况,一种是空字符串,一种是负整数,另一种是自然数:

>>> while True:
...   a = raw_input("Enter a number: ")
...   if len(a) > 0 and ((a[0] == '-' and a[1:].isdigit()) or a.isdigit()):
...     break
...   print "Not a number."
...
Enter a number: Celery stinks.
Not a number.
Enter a number:
Not a number.
Enter a number: -
Not a number.
Enter a number: 1
>>>

@我想这意味着他指的是自然数;他使用了.isdigit。他的问题是对的……对不起,除非你编辑你的答案,否则我现在不能更改我的反对票。@fmark别担心,除非你非常想要你的1次代表,否则你也可以编辑答案;它不需要是poster@fmark我认为这意味着他指的是自然数;他使用了.isdigit。他的问题是对的……对不起,除非你编辑你的答案,否则我现在不能更改我的反对票。@fmark别担心,除非你非常想要你的1次代表,否则你也可以编辑答案;它不需要是posterIs有很好的理由使用try…除了?如果在你被否决的答案中添加了一个加法inta>0条件,这会使他们的解决方案同样有效吗?@Nai在回答你的第一个问题时,尝试。。。需要except,因为inta返回整数而不是布尔值,并使用异常来表示它处理的字符串不是有效整数的情况。这就是为什么向isdigit答案中添加inta>0是不够的,因为如果遇到表示字符串的非整数,int将引发异常。@Nai已经说过,如果您只想查找自然数0,1,2,…,N而不是整数-N,…,-2,-1,0,1,2。。。,N我建议更新您的问题并使用下面的Jeff或Michaels答案。是否有充分的理由使用try…except?如果在你被否决的答案中添加了一个加法inta>0条件,这会使他们的解决方案同样有效吗?@Nai在回答你的第一个问题时,尝试。。。需要except,因为inta返回整数而不是布尔值,并使用异常来表示它处理的字符串不是有效整数的情况。这就是为什么向isdigit答案中添加inta>0是不够的,因为如果遇到表示字符串的非整数,int将引发异常。@Nai已经说过,如果您只想查找自然数0,1,2,…,N而不是整数-N,…,-2,-1,0,1,2。。。,N我建议更新您的问题,并使用下面的Jeff或Michaels答案。我的答案对您没有用,我将删除它,如果您只想使用正数,请选择一个使用isdigit的答案,希望这次我能帮上忙:我认为我的问题措词不当,让大家都感到困惑-\u-。无论如何,谢谢你的帮助!我的答案对你没有用,我会删除它,如果你只想要正数,请选择一个使用isdigit的答案,希望这次我能帮上忙:我认为我的问题措辞拙劣,让每个人都感到困惑-。无论如何,谢谢你的帮助!