“Try / Except ValueError UNLESS”可能吗?

时间:2018-05-31 16:39:42

标签: exception try-catch except valueerror

我是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 ,因为它可以被'except'捕获。

2 个答案:

答案 0 :(得分:0)

如果您要在'?'之后显示帮助。输入,然后只需调用函数显示当前中断的帮助。

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

然后,拆分读取输入并将其处理为两个步骤。

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

此外,你要求约会,但后来假设输入了一年,我在你的承诺中更明确。

"请输入活动年份,例如:1998年和#34; 或者你真正想要的任何形式。

答案 1 :(得分:0)

尝试使用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