【问题标题】:Is a "Try / Except ValueError UNLESS" possible?是否可能出现“Try / except ValueError UNLESS”?
【发布时间】:2018-11-10 17:55:17
【问题描述】:

我是 python 新手,在过去的几个小时里一直在拼命想弄清楚如何让它正常工作......

我确定这是非常简单的代码,但我就是不明白。

下面的代码应该是不言自明的,但基本上我要求用户将事件的日期输入为“int”,如果它不是数字,请让他们再试一次。 . 除非这是一个“?”

while True:
    date = None
    street = str(input('Name of street?: ').title())
    city = str(input("In what city?: ").title())
    while True:
        try:
            year = int(input("Date of event? (or '?'): "))
            if date == "?":
                break
        except Exception:
            print("That's not a date, try again!")
            continue
        break

似乎它甚至没有看到 IF,因为它在它可以之前就被“例外”抓住了。

【问题讨论】:

    标签: exception try-catch except valueerror


    【解决方案1】:

    如果您要在“?”时显示帮助或其他内容是输入,然后只需调用该函数以显示您当前有中断的帮助。

    if date == "?":
        display_help()
        continue
    

    然后,将读取输入和处理它分成两个步骤。

    in = input("Date of event? (or '?'): ")
    if in == "?":
        display_help()
        continue
    year = int(in)
    

    另外,你要求一个日期,然后假设输入了一年,我会在你的提示中更明确。

    "请输入事件的年份,例如:1998" 或者你真正想要的任何形式。

    【讨论】:

    • 当你遇到a时你想发生什么?
    • 当用户输入“?”时,应该绕过ValueError异常并返回“?” value 代替任何 int 否则将需要...
    【解决方案2】:

    尝试使用 valueError 异常。另外我认为在你的帖子中你提到你想输入一个整数作为日期,所以我用日期替换了年份。如果您希望年份为整数,则可以将变量日期替换为年份。如果你想让用户输入年、日和月,那么这个程序需要重新设计一下。

    date = None
    street = str(input('Name of street?: ').title())
    city = str(input("In what city?: ").title())
    while True:
        date = input("Date of event? (or '?'): ")
        if date == "?":
            break
        else:
            try:
                date = int(date)
            except ValueError:
                print("That's not a date, try again!")
                continue
            break
    

    【讨论】:

    • 但是,不管异常的type如何,不会触发它忽略“if”语句吗……?我没有尝试过,但我相信它会......再次,无论异常类型如何
    • 你是对的。我重新编辑了代码,但我不确定 OP 是否希望用户输入日期或年份。也许年份变量是一个错字,他的意思是日期。
    猜你喜欢
    • 2019-04-26
    • 2022-09-01
    • 1970-01-01
    • 2018-08-30
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多