[英]NameError: Outside Variable not defined
什么是調用正確的方法Score()
內的Possible_Outcomes()
我不斷收到以下錯誤:
A_win = A_score+(K*(1-win_probability_A))
NameError: name 'A_score' is not defined
我花了一些時間仔細研究建議的答案,但無法成功實施解決方案。 更具體地說,我不明白如何在另一個函數內部使用一個函數的多個返回值。 謝謝。
def Score():
A_score= 1500
B_score= 1600
win_probability_A= 1/(1+10**((B_score-A_score)/400))
win_probability_B= 1/(1+10**((A_score-B_score)/400))
return A_score, B_score, win_probability_A, win_probability_B
y=Score()
def Possible_Outcomes(y):
K=int(32)
A_win = A_score+(K*(1-win_probability_A))
A_loss = A_score+(K*(0-win_probability_A))
B_loss = B_score+(K*(0-win_probability_B))
B_win= B_score+(K*(1-win_probability_B))
return
Possible_Outcomes(y)
您所擁有的是范圍問題。 您確實定義了A_score
,但僅在函數Score()
的上下文中。 在該范圍之外,Python不知道在哪里尋找A_score
或您在此處定義的任何其他變量。
我已經對您的代碼進行了一些重寫,我相信您打算這樣做:
def Score():
A_score = 1500
B_score = 1600
win_probability_A = 1/(1+10**((B_score-A_score)/400))
win_probability_B = 1/(1+10**((A_score-B_score)/400))
return A_score, B_score, win_probability_A, win_probability_B
y = Score()
def Possible_Outcomes(values):
A_score, B_score, win_probability_A, win_probability_B = values
K = int(32)
A_win = A_score+(K*(1-win_probability_A))
A_loss = A_score+(K*(0-win_probability_A))
B_loss = B_score+(K*(0-win_probability_B))
B_win= B_score+(K*(1-win_probability_B))
return A_win, A_loss, B_loss, B_win
Possible_Outcomes(y)
您可以添加一行以獲取scope()
函數返回的值
A_score, B_score, win_probability_A, win_probability_B=y
另外,您可以在第二個函數內調用該函數以提高可讀性
def Possible_Outcomes():
K=int(32) # not sure what you are trying to do here can be just K=32
A_score, B_score, win_probability_A, win_probability_B = Score() # fetch all the values returned by the function
A_win = A_score+(K*(1-win_probability_A))
A_loss = A_score+(K*(0-win_probability_A))
B_loss = B_score+(K*(0-win_probability_B))
B_win= B_score+(K*(1-win_probability_B))
#return # you do not need to return in every function
Possible_Outcomes()
其他方法可能包括使用全局變量,除非有唯一選擇,否則我不建議使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.