Python 随机化坐标
我对Python很陌生,但我发现编写代码真的很有趣Python 随机化坐标,python,Python,我对Python很陌生,但我发现编写代码真的很有趣 dictionary\u of\u位置={ “位置_1”:(22141026),#x,y坐标 ‘地点2’:(23791016), "地点":(20451092), ‘地点四’:(21631080), ‘地点五’:(22141080), "地点(2262,1078),, } 我想运行一个代码来选择位置坐标,并将x和y值随机化+-15 我想做的是: 位置的字典中的i的。值(): pyautogui.click(i),print('click o
dictionary\u of\u位置={
“位置_1”:(22141026),#x,y坐标
‘地点2’:(23791016),
"地点":(20451092),
‘地点四’:(21631080),
‘地点五’:(22141080),
"地点(2262,1078),,
}
我想运行一个代码来选择位置坐标,并将x和y值随机化+-15
我想做的是:
位置的字典中的i的。值():
pyautogui.click(i),print('click on location'+str(i+1)+'!'),time.sleep(.75)
使用random.randint
:
随机导入
loc=…#做任何事情来获得你想要的坐标
loc=(loc[0]+random.randint(-15,15),loc[1]+random.randint(-15,15))
或者,如果您不仅需要整数,还需要浮点数:
随机导入
loc=…#做任何事情来获得你想要的坐标
loc=(loc[0]+random.random()*30-15,loc[1]+random.random()*30-15)
我喜欢python的一点是它如何温和地引导人们进行功能性思考。所以当我看到这样的问题时,我想——“在这种情况下,哪一个单一的、可重用的函数会真正有帮助?”
在回答这个问题时,我猜某种模糊器,在给定输入和一些参数的情况下,会吐出一个模糊版本。也许我们想要模糊一个固定的量(+15,根据你的问题),或者也许以后,我们可能想要模糊一个定义为比率的量
这里是一个涵盖第一个想法(固定范围的模糊)的起点,我们将调用输入值和模糊量,模糊(其他命名想法可用)
Python的模块中有很多有用的随机化代码,因此我们也将为其中一些功能导入这些代码
import random
def blur(value, blur):
blur_sign = random.choice([-1,1]) # is the blur going to be positive or negative?
blur_rand = random.randint(0,blur) * blur_sign # pick a random number up to "blur" and multiply by sign
return value + blur_rand
注意:上面使用的random.choice
可能有点过时
笨重的一面,正如其他人在这里展示的,呼唤
random.randint
带有下限和上限作为参数是
更干净的方式获得您想要的范围,并将跨越
肯定/否定,无需像我所做的那样明确设置
在这里
试试看,给“blur”函数输入任何值和一些模糊参数,它应该会给出你想要的结果。现在,您已经有了一个完成这项工作的函数,只需使用一些python将其粘贴到您感兴趣的任何工作流中即可
下面是一个示例,说明在给定现有代码的情况下可能会出现的情况:
for x,y in dictionary_of_locations.values():
i = (blur(x,15), blur(y,15))
pyautogui.click(i), print('clicking on location ' + str(i + 1) + ' !'), time.sleep(.75)
您可以使用randint(lb,ub)
获取介于下限/上限之间的随机整数
from random import randint
for loc in dictOfLoc:
newLoc = (dictOfLoc[loc][0] + randint(-15, 15),
dictOfLoc[loc][1] + randint(-15, 15))
dictOfLoc[loc] = newLoc
你可以用
例如:
将numpy导入为np
导入时间
字典中的位置={
“位置_1”:(22141026),#x,y坐标
‘地点2’:(23791016),
"地点":(20451092),
‘地点四’:(21631080),
‘地点五’:(22141080),
"地点(2262,1078),,
}
def get_random(x,y):
"""
根据rand_range获取(x,y)并返回(random_x,random_y)
+1被添加到上限,因为randint是高独占[低,高)
:参数x:位置x
:参数y:位置y
:返回:范围为15的x和y的随机值
"""
rand_范围=15#表示-/+15
x_低=x-随机范围
x_高=x+rand_范围+1
y_低=y-rand_范围
y_高=y+rand_范围+1
rand_x=np.random.randint(低=x_低,高=x_高)
rand\u y=np.random.randint(低=y\u低,高=y\u高)
返回rand_x,rand_y
对于位置,字典\u中的位置为\u位置。项()
当前_x,当前_y=位置
new_x,new_y=随机获取(当前_x,当前_y)
打印(点击{location}(x,y):({new_x},{new_y})!)
时间。睡眠(.75)
#输出
#点击位置_1(x,y):(22091040)!
#点击位置2(x,y):(23641005)!
#点击位置3(x,y):(20521086)!
#点击位置_4(x,y):(21601092)!
#点击位置5(x,y):(22221079)!
#点击位置_6(x,y):(22751082)!
查找Python中的random
模块。要获得范围为-15..+15的随机整数,请执行random.randint(-15,15)
。元组是不可变的,因此您的代码需要基于旧元组创建一个新的随机坐标,类似于newcoord=(oldcoord[0]+random.randint(-15,15),oldcoord[1]+random.randint(-15,15))
。Thomas Kimber的答案还提出了将其封装到可重用函数中的好主意。