首页 > 解决方案 > 未使用局部变量“k1”值

问题描述

我正在尝试构建一个包含一些条件的简单菜单,但在使用的行处我不断收到错误“未使用局部变量'k1'值”。我尝试将其更改为全局但没有任何反应。

def menu():

    print(" 1.Köşelerde ve Boyut Ortalarında Ast/8 kadar donatı \n 2. Köşelerde Ast/3, Boyut Ortalarında "
          "Ast/16 kadar donatı, \n 3.Karşılıklı Ast/2 kadar donatu \n 4.Tüm boyutlarda Ast/4 kadar donatı"
          "\n 5.Köşelere eşit dağılmış olarak k1=1")
    choice = input()

    if choice == "1":
        print("Asst/8 seçtiniz")
        if n > 1:
            k1 = 1.08
        else:
            k1 = 1.07 + 1.349*n - 3.994*n*n + 4.062*n*n*n - 1.406*n*n*n*n

    elif choice == "2":
        print("Ast/3 seçtiniz")
        if n > 1:
            k1 = 1.025
        else:
            k1 = 1.028 + 0.633*n - 1.868*n*n + 1.816*n*n*n - 0.584*n*n*n*n

    elif choice == "3":
        print("karşılıklı")
        if mk/mu > 0.4:
            print("Ast/2 formülleri için geçerlilik şartı sağlanmadı.")
        else:
            k1 = 1 + ((mk/mu) * (mk/mu))

    elif choice == "4":
        print("Ast/4 için")
        if n > 1:
            k1 = 1.12
        else:
            k1 = 1.137 + 1.233*n - 3.445*n*n + 3.083*n*n*n - 0.87*n*n*n*n
            print(k1)

    elif choice == "5":
        k1 = 1

    else:
        print("Listede olmayan bir seçeneği seçemezsiniz.")
        menu()


menu()
Astk1 = Ast * k1
print(Astk1)

标签: pythonpython-3.xpython-2.7

解决方案


这是一个作用域问题:在函数k1内定义menu(),因此无需任何干预,它将仅在该函数内可用(本地范围)。您可以定义一个全局变量(不赞成),或者更好的是,menu()返回 k1 的值。例如:

# just change the end of your function:
    else:
        print("Listede olmayan bir seçeneği seçemezsiniz.")
        k1 = menu()   # if k1 wasn't set, call menu again and use its value

    return k1         # return the value you settled on

my_k1 = menu()
Astk1 = Ast * my_k1
print(Astk1)

希望对您有所帮助,快乐编码!


推荐阅读