Python中如何允许mouseX、mouseY为非整数值并加入数组
解决Python中允许鼠标坐标为任意非整数值并存入数组的问题
嘿,这事儿其实挺容易搞定的,Python的列表对元素类型兼容性特别友好,完全支持整数和非整数(比如浮点数)共存,所以核心就是正确获取或设置非整数的mouseX/mouseY值,然后直接放进数组就行。下面给你一步步拆解:
1. 先明确Python列表的特性
Python的列表没有强类型限制,你的数组[W,A,D,X,mouseX,mouseY]里,前四个元素可以是整数,后面两个是任意非整数(比如123.45、-67.8这种浮点数),直接存进去完全没问题,不需要额外修改数组的结构。
2. 修改初始值(可选但更规范)
你原来的代码里初始设置了mouseX = 0和mouseY = 0,这是整数类型。如果想一开始就统一用非整数类型,可以改成浮点数初始值:
mouseX = 0.0 mouseY = 0.0
当然,就算初始是整数,后面给它赋值成浮点数也不会有问题,只是统一类型会让代码更清晰。
3. 获取或设置非整数的鼠标坐标
如果是实时获取真实鼠标位置,很多Python的输入库(比如pyautogui、pygame)返回的坐标本身就是浮点数,直接用就行:
示例:用pyautogui获取实时鼠标坐标
import pyautogui # 在需要更新坐标的地方(比如循环里)调用这个 mouseX, mouseY = pyautogui.position() # 返回的就是(float, float)类型
如果是模拟或自定义坐标值,直接赋值成任意非整数即可:
# 比如模拟一个非整坐标 mouseX = 456.78 mouseY = -90.12
4. 结合你的现有代码修改
把上面的逻辑融入到你现有的代码里,比如当检测到W键按下时,直接把当前的非整数坐标加入数组:
mouseX = 0.0 mouseY = 0.0 import pyautogui # 假设w_key_is_pressed()是你自己实现的按键检测函数 def w_key_is_pressed(): # 这里写你的按键检测逻辑,比如用pynput或pygame pass for data in train_data: img = data[0] choice = data[1] # 每次循环更新鼠标坐标(如果需要实时获取的话) mouseX, mouseY = pyautogui.position() # 检测到W键按下时,添加包含非整坐标的条目 if w_key_is_pressed(): new_entry = [0, 1, 0, 0, mouseX, mouseY] train_data.append(new_entry)
额外注意点
如果你的鼠标坐标是从外部文件或其他来源读取的字符串类型,记得先转换成浮点数:
# 比如读取到的是字符串"123.45" raw_mouse_x = "123.45" mouseX = float(raw_mouse_x)
内容的提问来源于stack exchange,提问作者hurkaperpa
相关产品推荐
相关产品推荐

