所以我得到了一段让我头疼的代码。在
def Handy():
print "\nMöchten Sie ein neues Handy?"
print "\n1 - Ja\n2 - Nein"
handy = raw_input(">>> ")
if handy == "2":
print "\nSie möchten kein neues Handy"
elif handy == "1":
wunschhandy = raw_input("\nBitte geben Sie den Namen des Handys ein: ")
else:
Handy()
return handy, wunschhandy
如果我选择选项"1"
一切正常。但是如果我选择"2"
,它会给我一个错误:"UnboundLocalError: local variable 'wunschhandy' referenced before assignment"
我知道为什么会发生,或者至少我想我知道为什么。这是因为变量wunschhandy
没有被清除,因为我使用了选项"2"
。在
那么我该如何解决这个问题呢?如果某个值是由right if choice指定的,是否有方法只返回该值?在
仅根据您提供的代码片段,似乎只有在“handy==”1“”时才定义“wunschhandy”变量,但此变量在最后返回。我将在if语句上方将wunschhandy设置为null,以便在尝试在结尾返回变量之前定义变量。在
在您的例子中,我将在
if
语句之前设置wunschhandy = None
。在在本例中,您有一个已定义的值,调用者可以测试它。在
另一个选择是
它为选项1返回长度为2的元组,为选项2返回长度为1的元组。调用者可以很容易地测试这一点。在
此外,我将在其中放入一个循环,而不是递归地调用
Handy()
。否则,您可能会以堆栈溢出错误结束。。。在如果只想在用户选择“1”时返回
wunschhandy
,那么将返回语句放在If块中相关问题 更多 >
编程相关推荐