所以我得到了一段让我头疼的代码。
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: 赋值前引用的局部变量 'wunschhandy'"
我知道为什么会发生,或者至少我认为我知道为什么。这是因为 var wunschhandy
尚未被清除,因为我使用了选项 "2"
。
那么我该如何解决这个问题呢?有没有办法只返回一个值,如果它是由正确的 if 选择分配的?
最佳答案
在您的情况下,我会在 if
语句之前设置 wunschhandy = None
。
在这种情况下,您有一个定义的值,调用者可以测试它。
另一种选择是
if handy == "2":
print "\nSie möchten kein neues Handy"
return handy,
elif handy == "1":
wunschhandy = raw_input("\nBitte geben Sie den Namen des Handys ein: ")
return handy, wunschhandy
else:
Handy()
它为选项 1 返回一个长度为 2 的元组,为选项 2 返回一个长度为 1 的元组。调用者可以轻松测试它。
此外,我不会递归调用 Handy()
,而是在其中放置一个循环。否则你可能会出现堆栈溢出错误......
关于python - 如何仅在 if 语句为 true 时才返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643493/