簡體   English   中英

NameError:外部變量未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM