下面是我试图在我的代码中做什么的示例......
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()
请注意,这些轻微的重命名除了理解代码之外没有其他效果,但是告诉它们实际操作的方法的良好名称非常重要。您多次阅读代码。你写一次。