2017-04-10 101 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)