2017-04-10 103 views
0

必需的位置參數是我的就是我想在我的代碼做榜樣......缺少在Python

def func(): 
x = int (input ('enter x: ')) 
return x 

def func2(): 
y = int (input('enter y: ')) 
return y 

def func3(x,y): 
print(randomint(x,y)) 

def main(): 
func() 
func2() 
func3() 

main() 

什麼,我想知道,爲什麼不能我使用x和y變量我已經通過輸入定義並在函數結束時返回?當這個程序試圖運行它時說這些函數缺少必要的參數。傻,我知道,我是新來的蟒蛇。

此外,如何在一個函數中使用變量,我在另一個單獨的函數中定義了這個函數?謝謝!

+0

看起來你有缺口的問題。縮進在python中很重要,因此您需要在查看其他問題之前解決該問題。 – grigor

+0

你已經定義了'func3'來獲取2個位置參數,所以你需要明確地通過'func3',否則'func3()'會拋出你所看到的錯誤。一般而言,您可以通過返回函數來使用函數內的值。所以假設你的縮進是正確的(合理的),你可以做'func3(func1(),func2())'或者類似'x,y = func1(),func2()'然後'func3(x,y) ' –

+0

原諒縮進我明白定義函數的語法。我怎麼會明確地發送給他們func3 –

回答

0

您的變量只存在於函數中,func3沒有辦法獲取x和y,但是您已將x和y定義爲參數。到目前爲止,你只是沒有通過他們。以下應該做的。

def func(): 
    x = int (input ('enter x: ')) 
    return x 

def func2(): 
    y = int (input('enter y: ')) 
    return y 

def func3(x,y): 
    print(randomint(x,y)) 

def main(): 
    x_val = func() 
    y_val = func2() 
    func3(x_val, y_val) 

main() 
0

你說,你知道如何縮進,所以我不打算討論的是,眼前的問題是,你需要從funcfunc2趕上返回值被抓住了。

你可以這樣做是這樣的:

def func(): 
    x = int (input ('enter x: ')) 
    return x 

def func2(): 
    y = int (input('enter y: ')) 
    return y 

def func3(x,y): # there's two positional value so you will need to pass two values to it when calling 
    print(randomint(x,y)) 

def main(): 
    x = func() # catch the x 
    y = func2() # catch the y 
    func3(x,y) # pass along x and y which acts as the two positional values 
    # if you're lazy, you can directly do: 
    # func3(func(), func2()) which passes the return values directly to func3 

main() 

另一種方法是使用全局聲明,但是這不是你的情況下,最好的方式。

只是一個提示:如果您使用的是隨機模塊,隨機整數被稱爲:random.randint(x,y)