如何在此代码Python中处理ValueError?

时间:2018-07-13 22:38:33

标签: python python-3.x loops error-handling valueerror

我之前已经做过,但我认为此错误正在显示,因为我没有循环代码,该代码仅工作一次,然后第二次尝试显示错误。

我的代码:

import string
import time
def timer(x):
    for n in range(x,0,-1):
        time.sleep(1)
        print(n)
    print("Times Up"+"\n")
    ask("Time for: ")

def ask(a):
    x=int(input(str(a)))
    print("\n"+"Clock's Ticking")
    timer(x)
try:
    ask("Time for: ")
except ValueError:
    ask("Enter a number to time: ")

我希望我的代码在输入非整数的内容时不会出错,但是在用户输入整数之前不知道如何循环执行异常代码。

1 个答案:

答案 0 :(得分:0)

将异常处理移至ask函数:

import string
import time
def timer(x):
    for n in range(x,0,-1):
        time.sleep(1)
        print(n)
    print("Times Up"+"\n")
    ask("Time for: ")

def ask(a):
    x = None
    while x is None:
        try:
            x=int(input(str(a)))
        except ValueError:
            print('Enter a number to time!')
    timer(x)

ask("Time for: ")