是否可能出现“Try / except ValueError UNLESS”?
Posted
技术标签:
【中文标题】是否可能出现“Try / except ValueError UNLESS”?【英文标题】:Is a "Try / Except ValueError UNLESS" possible? 【发布时间】: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,因为它在它可以之前就被“例外”抓住了。
【问题讨论】:
【参考方案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 是否希望用户输入日期或年份。也许年份变量是一个错字,他的意思是日期。以上是关于是否可能出现“Try / except ValueError UNLESS”?的主要内容,如果未能解决你的问题,请参考以下文章
WebAssembly 的出现是否意味着 Javascript 要完
warning MSB3245: 未能解析此引用。未能找到程序集“CemeteryBLL”。请检查磁盘上是否存在该程序集。 如果您的代码需要此引用,则可能出现编译错误。