python - 未使用局部变量“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)
解决方案
这是一个作用域问题:在函数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)
希望对您有所帮助,快乐编码!