2012-06-21 43 views
1

我想使用return語句。如果y是負數,則程序將終止。但它顯示「ValueError:數學域錯誤」我想在Python中使用「return」語句,它不起作用。

import math 
y=-5 
def df(y): 
if y<=0: 
     print y, "is negative" 
     return 
result = math.log(y) 
print "The log of y is",result 
+0

你在哪裏調用你的函數? –

+2

你應該編輯你的問題,這樣它就不會被忽略掉。拼寫,語法和標點符號都很重要。確保您閱讀編輯器提示,以便了解如何在帖子中使用代碼塊(在每個代碼行中添加4個空格)。請記住,如果你沒有費力問你的問題,人們就不會付出任何努力來回答它。歡迎來到stackoverflow。 – Wug

+0

好吧,既然你是新手,你可以先閱讀有關格式的常見問題,我不認爲這是一個特殊的問題。鏈接是[這裏](http://stackoverflow.com/editing-help#comment-formatting) – windsound

回答

0

你的回報是空的....沒有與「迴歸」在同一行沒有變量名或值。例如,如果你想返回值5,你就會把

return 5 

如果你想返回一個變量foo的,你就會把

return foo 

現在你正在返回什麼。

也許你想要這樣?

import math 
y=-5 
def df(y): 
    if y<=0: 
     print y, "is negative" 
     return "impossible to calculate" 
    result = math.log(y) 
    return result 

print "The log of y is", df(y) 
+1

使用此代碼時,它顯示「返回」功能外。正在發生的第8行 – Soumyajit

+0

編輯。我更喜歡perl,所以我更頻繁地使用它,忘記了這些嚴格的格式化的東西。 – PinkElephantsOnParade

+0

感謝PinkElephantsOnParade提供幫助 – Soumyajit

1

返回控制權返回給調用者。在這種情況下,如果你想獲得函數的值,你需要調用它,並且你需要函數實際返回一些東西。也許沿着這些線:

import math 

def df(v): 
    if v <= 0: 
     print v, "is negative" 
     return 

y = -5 
df(y) 
result = math.log(y) 
print "The log of y is",result 

雖然我不確定你想要做什麼。如果你想你的函數返回的東西,你可以使用這個語法:

return [something] 

...與值或變量要返回其值替換[東西。 math.log返回其參數的對數。您已經知道如何保存函數的返回值:

您希望這會導致程序退出。如果從主方法使用,即在任何功能之外,返回將僅退出該程序。返回控制返回到調用例程(如果沒有調用例程,程序退出)。您可能需要使用出口調用來代替:

import sys 
... 
sys.exit(0) 

sys.exit將立即終止程序,通過提供的值返回給調用程序。如果你不知道這是什麼,你可以將該值設爲0

result = math.log(y) 

至於你的錯誤信息,你不能把一個負數的對數,嘗試積極的來代替。 (不爲0或者)

我想你想是這樣的:

import math 

def df(v): 
    if v <= 0: 
     print v, "is negative" 
     return True # returns true if the value is negative or zero 
    return False # otherwise returns false 

y = -5 
if df(y):   # test if negative or positive, branch on return value 
    return   # if value was negative or zero, return (exit program) 
result = math.log(y) 
print "The log of y is",result 
+0

我打算使用程序的return語句來終止並打印y不正確的結果。如果y爲負 – Soumyajit

+0

您不能通過從您調用的函數返回來退出程序。我會爲你想要做的事添加另一個編輯。 – Wug

+0

Wug,我們的代碼給出了語法錯誤,第11行。我正在閱讀一本書,學習Python,那裏給出了我寫的程序。如果y的值爲負值,則假設退出並打印錯誤消息。 – Soumyajit

2

我有這種感覺,你想包括DF()函數內部日誌呼叫,只檢查其負第一。

import math 
y=-5 
def df(y): 
    if y<=0: 
     print y, "is negative" 
     return 
    result = math.log(y) 
    return result 

print "The log of y is", df(y) 

要讓你的函數返回一個值,你必須指定它應該返回的值。否則返回無

+1

啊,想想這也許就是他想要的 - 至少這是最有意義的 - 減去他會記錄NoneType(如果y是負數)的事實。 – PinkElephantsOnParade

+0

雅我想爲代碼做出最小的改變,以解決特定的問題,而不是引入太多的新東西 – jdi

+0

謝謝@jdi的幫助。 – Soumyajit

0

任何函數需要3個部分,因爲我學會了編程:

(1)輸入,爲你「高清」的功能,你需要知道你想放入的功能是什麼。

例如:

def function (input1, input2): 

我們也稱這些投入爲參數

(2)你需要顯示輸出:

例如,你提供,如果您想返回變量「結果」持有數量的代碼,你可以這樣做:

return result 

,或者如果你不想返回,或輸出任何東西,你可以這樣做:

return None 

在Python中,無意味着什麼,至少你能想到我現在就這樣。

(3)功能正在做的事情爲你,所以

之間
def function(inputs): 

return None 

的事情是你要修改的輸入變量爲回報(或輸出)的內容。

希望它有幫助,並始終在提出任何問題之前工作。祝你好運在Python

相關問題