缺少必需的位置参数



下面是我试图在我的代码中做什么的示例......

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 变量?当这个程序尝试运行时,它说函数缺少必需的参数。我知道很傻,我是python的新手。

此外,如何在我正在创建的一个函数中使用变量,这些变量是在另一个单独的函数中定义的?谢谢!

你说你知道如何缩进,所以我不打算讨论这个问题,手头的问题是你需要从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()

另一种方法是使用 global 语句,但这不是适合您的情况的最佳方法。

只是一个提示:如果您使用的是随机模块,则随机整数由以下方式调用: random.randint(x,y)

你的变量只存在于函数中,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()

或者就像这样,如果你不想使用变量。

请记住,相同的名称并不意味着它是相同的变量。作用域可以是不同的(方法、函数、其他地方(,并且名称使变量在相同的作用域中是唯一的("相同"(。这在所有高级编程语言中都是相似的,但是作用域可以以不同的方式相交。因此,重用上面的例子,例如可以在JavaScript中工作。

这可能最接近您尝试实现的目标:

def inX():
    return int (input ('enter x: '))
def inY():
    return int (input( 'enter y: '))
def PrintRand(x,y): 
    print(randomint(x,y))
def main():
    PrintRand(InX(),InY()) # is probably closest to what you attempted to do.
main()

请注意,这些轻微的重命名除了理解代码之外没有其他效果,但是告诉它们实际操作的方法的良好名称非常重要。您多次阅读代码。你写一次。

相关内容

  • 没有找到相关文章

最新更新