如何解决倒计时 Python3.9.4 中的用户输入问题

How to solve this User Input problem in countdown timer Python3.9.4

我有一个倒数计时器,要求用户输入“幸运数字”。输入该数字后,计时器开始倒计时并打印出一条简单消息。

我的问题是,如果用户输入不是数字,我会收到“Traceback(最近一次调用最后一次)ValueError:以 10 为底的 int() 无效文字”

我明白那是什么意思,但我不知道如何让它绕过这种情况,以便用户输入可以是 任何东西(不仅仅是数字)而不是给出我是一个错误,而只是打印出一条消息,只是说; “没有幸运数字继续”..-继续脚本的其余部分..

如有任何帮助,我们将不胜感激。谢谢

这是代码的截图

将用户输入视为字符串,然后使用 try-except 判断它是否为数字

try: 
  number = int(stringvar)
except:
  print("continue without lucky number")

如果用户没有输入数字,您还可以为您的计时器生成一个随机数

import time
import random

def countdown(t):
    while t:
        mins, secs = divmod(t, 60)
        timer = "{:02d}:{:02d}".format(mins, secs)
        print(timer, end='\r')
        time.sleep(1)
        t -= 1

num = input("Enter your lucky number: ")

isNum = False

try:
    i = int(num)
    isNum = True
except:
    print("Continue without lucky number")

if isNum:
    countdown(i)
else:
    rand = random.randint(1, 100)
    countdown(rand)
    print(f"timer number is: {rand}")

这可以是你的整个计时器程序。

如果你想给出一个不是整数的特定消息而不是 运行 函数,那么你可以使用 if... else 循环或 try... except 循环。例如:

try:
    countdown(int(t))
except ValueError:
    if input("Continue without lucky number?") == "y":
        countdown(5)

Zen of python

中所述

Errors should never pass silently.
Unless explicitly silenced.

但是,除了捕获错误之外,我认为您还可以做另一件事。假设您的变量名称是 var,

if not var.isdigit():
    var = ord(var)

在这里,函数 ord() 将 return 字符的 ASCII 值,这显然是一个整数,您的代码将 运行 成功。