2014-03-30 40 views
0

如果输入了指定范围之外的数字,则我的代码会引发异常错误。 一旦这样做,它将控制返回到我的主要功能。在Python 3中引发异常之后返回特定点

我想做的是回到问题,所以用户可以再试一次。如何/可以 我让它返回到另一个输入的变量?

def student_entry(): 
    try: 
     num_students = int(input('How many students do you have? : ')) 
     print() 
     for student in range (1, num_students + 1): 
      print('enter data for student #', student, sep='') 
      print() 
      name = input('Student Name: ') 
      print() 
      average = int(input('What is the students average : ')) 
      print() 

      try: 
       if average >=0 and average <= 100: 

        mainfile.write(str('Student Name: ') + str(name) +'\n') 
        mainfile.write(str('Grade Average: ') + str(average) + '\n') 

       else: 
        raise ValueError 

      except ValueError as AverageError: 

       print('invalid average. Please try again.') 
       return average 

    except ValueError: 

     print('an error has occured') 

    return 

回答

1

当你赶上ValueError你破坏了student_entry()功能,你return average.您可以通过使用while循环,你可以打出来的只有你满足一般条件和写出来你的数据后,避免这种情况。

while True: 
    average = int(input('What is the students average : ')) 
    try: 
     if average > 0 and average <= 100: 
      # write to file 
      break # this will break out of the while loop 
     else: 
      raise ValueError 
    except ValueError: 
      print("Invalid average - try again") 

使用while True将意味着循环将反复运行直到我们使用break声明明确地跳出来 - 这样用户将被提示输入一个输入,直到他们满足的条件,他们的平均大于零且小于或等于100。

更多细节上while环路在Python可以在https://wiki.python.org/moin/WhileLoop

可以看出
0

尝试包装你输入一个while循环:

average = -1 
while (average < 0) or (avergage > 100) 
    average = int(input('What is the students average : ')) 
print() 

,你可以得到一点点的创意与这个在您的用户解释为什么输入无效或加入这种条件句的条件,但这应该足以让你走。