[英]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 的新手。
此外,如何在我正在创建的一个函数中使用变量,这些变量是在另一个单独的函数中定义的? 谢谢!
你说你知道如何缩进,所以我不打算讨论这个,手头的问题是你需要在捕获func
和func2
后捕获它们的返回值。
你可以这样做:
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.