【发布时间】:2011-04-05 20:16:27
【问题描述】:
我想限制用户输入,以便提供的 N 服从 N >0 或 N < 100。
我应该使用if... else 还是try... except?您能否提供两种方法的示例?
【问题讨论】:
-
我想你可能在你的情况下想要“和”,而不是“或”。
标签: python
我想限制用户输入,以便提供的 N 服从 N >0 或 N < 100。
我应该使用if... else 还是try... except?您能否提供两种方法的示例?
【问题讨论】:
标签: python
我建议一个组合:)
while True:
value = raw_input('Value between 0 and 100:')
try:
value = int(value)
except ValueError:
print 'Valid number, please'
continue
if 0 <= value <= 100:
break
else:
print 'Valid range, please: 0-100'
希望对你有帮助。
【讨论】:
goto 仿真,非常适合此类任务恕我直言。看,循环中有 break 和 continue 语句 - 所以不用担心 - 它会在某个时候停止;)
while True: 是一个用于创建无限循环的习语(在@zindel 的示例中,循环一直运行到用户输入一个在允许范围内的数字,所以唯一的方法是通过这个代码块是输入一个有效的整数(或者 Ctrl+C,我猜...)
while True: 永远循环,直到遇到 break 或抛出未处理的异常。所以这段代码一直循环,直到0 <= value <= 100 评估为True。
if/else 在这里可能更合适,因为引发的任何异常都是你自己抛出的(你仍然必须处理它们)。
【讨论】:
最简单的方法是 if/else。
但我可能会同时使用 if/else 和抛出异常进行验证。
【讨论】:
# test value of N
try:
N = int(N)
except ValueError:
raise ValueError('N must be integer')
if N < 0 or N > 100:
NError = ValueError('N must be between 0 and 100, inclusive.')
raise NError
【讨论】: