python - 如何仅在 if 语句为 true 时才返回值?

标签 python

所以我得到了一段让我头疼的代码。

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/

相关文章:

python - 我如何自动指定在 python 3 中默认为 None 的模拟属性?

python - 更快的开发 Rails 还是 Django?

python - 基于元组的子集 Pandas 数据框

python - Django Rest Framework,我可以使用 ViewSet 从 Django View 函数生成 json 吗?

python - 检查文本中是否存在大量关键字

python - 有没有办法用 matplotlib 将 3D 线绘制为一系列圆圈?

python - 将值随机分配给 Pandas 数据框中的行子集

python - 正则表达式将行数据拆分为年份/温度读数

python - 在 Excel 中使用数据透视表时跨多行进行聚合

Python wifi安装问题