我还是python的新手。 我是否必须使用try:和ValueError? 如果不是,我何时应该使用它们? 有些部件可以使用和不使用它 E.g
Def Main_Menu():
Main_menu_op = input("A.Start \nB.Options \nC.Exit")
Try:
if Main_menu_op == "A" or "a":
Start()
elif Maim_menu_op == "B" or "b":
Options()
elif Main_menu_op == "C" or "c":
Exit()
except ValueError:
print("error")
Main_menu()
我输入了这个,因为我在平板电脑而不是我的电脑上,所以只是忽略任何错误
P.s这是我正在研究的基于文本的游戏的一部分
答案 0 :(得分:2)
try
except
块用于包含可能产生运行时错误的代码。错误类型的可选参数(在这种情况下,您有输入ValueError
)将更改块,以便它只捕获该类型的异常。在您的示例中,如果没有正确选择任何给定选项,您似乎正在尝试生成错误消息。
如上所述,如果收到不同的输入,则不会传递任何if语句,但不会生成异常。而不是尝试:除了,您可能只需在else
语句中使用额外的if
块。真正的异常通常保留用于在尝试执行非法操作时退出代码,例如除以0.如果您想要create your own自定义异常来模仿非法行为,则必须测试何时应该引发非法行为(可能使用if语句)然后使用您的自定义异常调用raise
。
我还想指出,在if
和elif
条件下,我认为您误解了==
和or
的运算符优先级。等价运算符:==将首先调用,因为运算符优先级产生一个真值或假值,然后或将被计算。将true或false值与非空字符串('a'
,'b'
或'c'
)进行比较,该字符串将始终评估为true。相反,您可以添加另一个==比较,例如:if Main_menu_op == "A" or Main_menu_op == "a":
答案 1 :(得分:0)
当您知道可以安全地处理特定的已知错误时,您应该只使用try
和except ...Error
(documentation)。
因此,如果您期望某个错误,例如ValueError
,您可以捕获它并处理它而不是让您的应用程序崩溃。假设您有一个用户的输入并期望一个数字:
...
a = raw_input('Please give me a number: ') # input(...) on Python 3.
try:
number = float(a)
except ValueError:
print 'You have not given me a valid number, defaulting to 0.'
number = 0.
# do stuff with number
...
如果您没有预料到错误或者没有准备好处理它(或者没有正确的处理方法),您可能希望在控制台上看到错误及其跟踪,以便您可以对其进行调试。
在您的示例中,您可以使用“else”来表示无法识别给定的命令,并请求另一个。