繁体   English   中英

Python 中缺少必需的位置参数

[英]Missing Required Positional Arguments in 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 变量? 当这个程序试图运行时,它说函数缺少必需的参数。 愚蠢的我知道,我是 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()

请注意,这些轻微的重命名除了理解代码之外没有任何影响,但是告诉他们实际做什么的方法的好名称非常重要。 您多次阅读代码。 你写一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM