它說我沒有定義變數,即使執行該操作的代碼就在它的正上方,但會出現錯誤訊息:
“回溯(最近一次呼叫最后一次):檔案“main.py”,第 55 行,如果 kategoribmi == “underweight”:NameError:名稱 'kategoribmi' 未定義“
if kelas == "('15', 'P')":
if bmi > 28.2:
kategoribmi = "obese"
elif bmi >= 23.6 < 28.2:
kategoribmi = "overweight"
elif bmi <= 15.8:
kategoribmi = "underweight"
else:
kategoribmi = "ideal"
if kategoribmi == "underweight":
underweight()
elif kategoribmi == "overweight":
overweight()
elif kategoribmi == "obese":
obese()
else:
ideal()
我真的不確定在這里做什么,我已經嘗試查找如何解決這個問題,但我仍然不清楚。
uj5u.com熱心網友回復:
發生這種情況是因為當編譯器檢查您的代碼時,無法確定執行是否會到達kategoribmi = "something". 如果if您為其賦值的陳述句kategoribmi在執行時不為真,則不會分配該變數。并且是否會出現這種情況,在編譯時無法得知。
對此的簡單解決方案是kategoribmi在第一組if陳述句之前分配一個默認值,如下所示:
kategoribmi = ""
if kelas == "('15', 'P')":
if bmi > 28.2:
kategoribmi = "obese"
elif bmi >= 23.6 < 28.2:
kategoribmi = "overweight"
elif bmi <= 15.8:
kategoribmi = "underweight"
else:
kategoribmi = "ideal"
if kategoribmi == "underweight":
underweight()
elif kategoribmi == "overweight":
overweight()
elif kategoribmi == "obese":
obese()
else:
ideal()
uj5u.com熱心網友回復:
您的代碼有點不完整,也許它在函式內部?是否存在必須評估的先前條件True?為了獲得更好的幫助,您應該提供更多代碼。您確定您的代碼每次運行時都可以評估True條件嗎?if kelas == "('15', 'P')"在旁注中,您忽略了值 28.2
希望能幫助到你
uj5u.com熱心網友回復:
如果變數kelas不等于 string "('15', 'P')",例如,如果它是一個元組('15', 'P')而不是一個字串,或者如果它是任何其他值,例如"anything",代碼會直接跳轉到 line if kategoribmi == "underweight",而不是執行 if 陳述句中的那些。
我不知道您要做什么,但是可能的解決方案之一是增加底部的縮進,使其位于上面的 if 陳述句中:(如果您打算僅在kelas=="('15', 'P')".
if kelas == "('15', 'P')":
if bmi > 28.2:
kategoribmi = "obese"
elif bmi >= 23.6 < 28.2:
kategoribmi = "overweight"
elif bmi <= 15.8:
kategoribmi = "underweight"
else:
kategoribmi = "ideal"
if kategoribmi == "underweight":
underweight()
elif kategoribmi == "overweight":
overweight()
elif kategoribmi == "obese":
obese()
else:
ideal()
另一種解決方案是kelas=="('15', 'P')"將kelas==('15', 'P'). 也許您正試圖將其kelas作為一個元組進行比較。無論如何,如果沒有完整的最小可重現代碼,我們無法為您提供太多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/520436.html
標籤:Python变量
