在主函数的一个函数中使用局部变量

时间:2018-07-09 13:19:57

标签: python-3.x

对于编程和python来说,我是一个全新的人,但是我最近加入了一个课程。目前,我正在尝试制作一个程序来提示用户输入屏幕上对象中心的坐标。

然后程序将获取项目的X和Y坐标,并在+-15的范围内随机化坐标。因此,如果X坐标为30,则程序将选择15到45的随机数。

然后程序将在3.2到4.3秒之间随机延迟,并将鼠标从其当前位置移动到随机时间延迟内的随机坐标。

我希望它能够无限循环,直到提示它停止为止,我想我能弄清楚。但是,我不明白如何正确使用参数来允许在函数main()中使用局部变量coords_x,coords_y和click_delay

这是我到目前为止所拥有的:

#! python3
import pyautogui, sys
import random
from random import randint

center_x = int(input("Please enter the X coordinate of the center of the item:"))
center_y = int(input("Please enter the Y coordinate of the center of the item:"))

#y = 23 long 735 - 712
#x = 23 862 - 838

buffer = 17

def randomizex():
    min_x = center_x - buffer
    max_x = center_x + buffer
    coords_x = randint(min_x, max_x)


def randomizey():
    min_y = center_y - buffer
    max_y = center_y + buffer
    coords_y = randint(min_y, max_y)


def randomizedelay():
    click_delay = random.uniform(3.2, 4.3)

def main():
    randomizex()
    randomizey()
    randomizedelay()
    pyautogui.moveTo(coords_x, coords_y, click_delay)

main()

感谢您的帮助。我发现的类似此类问题的其他答案对于新手来说相当混乱,其中一些是针对python 2的。

2 个答案:

答案 0 :(得分:1)

欢迎使用SO(以及编程)!

您几乎可以使用它,所缺少的是将randomizex(), randomizey(), randomizedelay()函数的返回值保存到变量中,以便可以在main中使用它们。即使您在各自函数中命名变量,命名也不会超出这些函数的范围,因此main并不知道它们被称为。这样的事情应该起作用:

def main():
    coords_x = randomizex()
    coords_y = randomizey()
    click_delay = randomizedelay()
    pyautogui.moveTo(coords_x, coords_y, click_delay)

答案 1 :(得分:0)

def main():
    your_x_coords = randomizex()
    your_y_coords = randomizey()

您的函数返回x_coords,因此您必须将它们分配给main内部的另一个局部变量。