2017-01-31 117 views
-1

我只是想製作一個程序,我已經被要求做。 這是一個與判別數學的項目,但我得到一個錯誤:錯誤 - 名稱'行動'未定義

name 'action' is not defined

這裏是我的代碼。它出什麼問題了?

import math 

def main(a,b,g): 
    action = math.pow(b,2) - (4*a*g) 
    return action 

a = input("Give me A's value: ") 
b = input("Give me B's value: ") 
g = input("Give me G's value: ") 


if action < 0: 
    print ("The discriminant is < 0") 
elif action > 0: 
    x1 = (-b + math.sqrt(praksh))/(2*a) 
    x2 = (-b - math.sqrt(praksh))/(2*a) 
    print "x1:", x1 
    print "x2:", x2 
else: 
    dis0 = (-b)/(2 * a)enter code here 
    print "The discriminant is: " ,dis0 

+0

在你的代碼的頂層,你需要調用函數返回值賦值給一個變量使用'action'之前。 'action = main(a,b,g)' –

+1

你正在檢查'action'是否爲負值,它甚至會假定一個值。要定義'action',你必須首先運行你定義的函數,並將它的'return'賦值給外部範圍可用的某個變量。 –

回答

3

之前使if檢查,你必須將值初始化爲action。目前它在main函數中定義,因此不能在功能範圍之外訪問。根據您的代碼,初始化它將不得不調用main()函數並將返回值存儲爲action變量。

爲了使其工作,下面行代碼更新(註釋在線)

action = main(a,b,g) # call `main` function for initializing `action` 

if action < 0: # your if condition 

:在Python 3.x中,輸入返回str值。它必須explicitlly類型強制轉換爲int,如:

a, b, g = int(a), int(b), int(g) 
0

好,「動作」是你的主函數的範圍內定義。主要不被稱爲。

2

您還沒有定義action

import math 

def main(a,b,g): 
    action = math.pow(b,2) - (4*a*g) 
    return action 

a = input("Give me A's value: ") 
b = input("Give me B's value: ") 
g = input("Give me G's value: ") 

action = main(a, b, g) // define action 
if action < 0: 
    print ("The discriminant is < 0") 
elif action > 0: 
    x1 = (-b + math.sqrt(praksh))/(2*a) 
    x2 = (-b - math.sqrt(praksh))/(2*a) 
    print "x1:", x1 
    print "x2:", x2 
else: 
    dis0 = (-b)/(2 * a)enter code here 
    print "The discriminant is: " ,dis0