2014-09-28 50 views
-1

我在爲這個問題編寫代碼時遇到了麻煩。我在幾個地方看到了這個問題,但我仍然無法從他們提供的技巧中找出答案。Python編碼(調用函數/返回值)

問題是:編寫一個程序,它有兩個函數:first()和second()。函數first()應該打印字符串「In function first()」,然後調用函數second()。第二個功能()應打印字符串「在功能上第二(),在全球scopre,應首先調用函數()。

這是我的代碼..

def first(): 
    first = "In function first" 


def second(): 
    second = "In function second" 

print first(), second() 

戴上這個更近一步?它仍然沒有工作,但我把打印功能回到..

+3

您錯過了「然後調用函數second()'」的部分。你有沒有想過如何以及在哪裏做?另外,你不能在函數外使用'return'。 – BrenBarn 2014-09-28 22:06:04

+0

你也錯過了'打印'字符串的部分... – jonrsharpe 2014-09-28 22:11:41

+0

我改變了一點點,以便讓打印功能回到那裏。我早先把它們拿出來,忘了把它們放回去。 – Kayla 2014-09-28 22:17:41

回答

0

first = "In function first"不作函數的返回"In function first"

我能理解你爲什麼會認爲並非如此。在某些語言中,返回av的方式alue是將其分配給該功能。在其他語言中,賦值是一個表達式,並且在函數內部評估的最後一個表達式是返回值。所以,有很多語言你在做什麼都行。

但是Python不是其中之一。在Python中,返回值的唯一方法是使用return聲明。如果您不使用return聲明,則呼叫者只需獲得None

所以,你的代碼只是創建一個局部變量(容易混淆)與函數相同的名字,賦值給它,然後忽略該變量,所以它最終沒有任何效果。

你想要的是:

def first(): 
    return "In function first" 

def second(): 
    return "In function section" 

print first(), second() 

然而,儘管這會給你所需的輸出,它實際上沒有做你說你想要的東西:

功能第一()應打印字符串「In function first()」

在這種情況下,應該其中有print,而不是return其他人必須打印的值。

...然後調用函數second()。

然後你需要撥打電話second()first的定義之內,而不是在它之外。

功能第二()應打印字符串「在功能上第二()。

再次,它應該print,不return

所以,這是一個更好的比賽你試圖做:

def first(): 
    print "In function first" 
    second() 

def second(): 
    print "In function second" 

first() 

話雖這麼說,你寫的代碼(此修復程序)實際上好像不是代碼更好代碼你想寫。從內部函數返回值並處理最高級別的輸出通常比全部都更靈活。

+0

所以我只是需要擺脫=並將它改回來。謝謝! – Kayla 2014-09-28 22:24:39

+0

@Kayla,我不會說那只是你需要做的。你需要了解正在發生的事情,然後你(仍然)需要遵循作業中的指示。 – alexis 2014-09-28 22:51:14

+0

@alexis,我明白,我只是不知道我到底做錯了什麼。 – Kayla 2014-09-28 23:03:10