python 教程案例(Python列表计数及插入实例教程)

本文目录
- Python列表计数及插入实例教程
- 使用Python可以做什么
- 在Python语言案例教程中函数定义有哪几个关键元素
- 建议收藏!10 种 Python 聚类算法完整操作示例
- 如何利用python批量生成本地ip的实例详解
- python怎么制作游戏脚本
Python列表计数及插入实例教程
本文实例讲述了Python列表计数及插入的用法。分享给大家供大家参考。具体如下:
代码如下:
word==a
a=
//从num1到num2的元素(不包括元素num2)
//若为负数,则代表倒数第几个
在对list进行操作时,append 追加,word.append(elements)
elements是独立的,若为list时作为渗裤一个整体追加在word的后面,而不是延长word,
word.extend(elements)是延长,将elements包含的元素延长在word的后面insert(),插入:
代码如下:
word.insert(mum,elements)
所插入的也是也是一个整体。
希望本文所述对大家的Python程序设备喊贺计有所帮助。
使用Python可以做什么
本篇文章给大家带来的内容是介绍使用Python可以做什么?有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
Python编程语言可适用于数据科学,机器学习,系统自动化,Web和API开发等。
Python最基本的使用示例就是脚本语言和自动化语言。Python不仅仅是shell脚本或批处理文件的替代品;还用于自动化与Web浏览器或应用程序GUI的交互,或者在Ansible和Salt等工具中进行系统配置和配置。但脚本和自动化只是Python的冰山一角。【相关视频教程推荐:Python教程】
下面我们就来简单了解一下Python可以用来做什么?
1、使用Python进行通用应用程序编程
您可以使用Python创建命令行和跨平台GUI应用程序,并将它们部署为自包含的可执行文件。虽然Python不具有从脚本生成独立二进制文件的本机能力,但是可以使用诸如cx_Freeze和PyInstaller之类的第三方包来实现这一点。
2、使用Python进行数据科学和机器学习
复杂的数据分析已经成为其中最快的领域之一,也是Python的经典使用案例之一。大多数用于数据科学或机器学习的库都具有Python接口的,这使得该语言成为机器学习库和其他数值算法最流行的高级命令接口。
3、Python中的Web服务和REST API
Python的本地库和第三方Web框架提供了快速方便的方法来创建从几行代码中的简单RESTAPI到成熟的数据驱动站点的所有内容。Python的最新版本对异步操作有很强的支持,允许站点使用正确的库每秒处理数万个请求。
4、Python中的元编程和代码生成
在Python中,语册皮燃言中的所有握扒东西都是一个对象,包括Python模块和库本身。这使Python能够作为高效的代码生成器工作,从而能够编写操纵它们自己的函数并具有在其他语言中很难或不可能实现的那种可扩展性的应用程序。
Python还可以用来驱动代码生成系统,例如LLVM,以高效地创建其他语言的代码。
5、Python中的“胶水代码”
Python通常被描述为“粘合语言州虚”,意思是它可以让不同的代码(通常是具有C语言接口的库)进行相互操作。它在数据科学和机器学习中的应用就是这样的,但这只是一个总体概念的化身。
总结:
在Python语言案例教程中函数定义有哪几个关键元素
函数分为有参和无参函数,这是从是否带有参数来看的,定义格式如下:
从返回角度看,有返回值跟无返回值,主要是根据代码中是否有
return 返回值
来判断
综合起来,完整的定义代码如下图:
建议收藏!10 种 Python 聚类算法完整操作示例
聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。有许多聚类算法可供选择,对于所有情况,没有单一的最佳聚类算法。相反,最好探索一系列聚类算法以及每种算法的不同配置。在本教程中,你将发现如何在 python 中安装和使用顶级聚类算法。完成本教程后,你将知道:
聚类分析,即聚类,是一项无监督的机器学习任务。它包括自动发现数据中的自然分组。与监督学习(类似预测建模)不同,聚类算法只解释输入数据,并在特征空间中找到自然组或群集。
群集通常是特征空间中的密度区域,其中来自域的示例(观测或数据行)比其他群集更接近群集。群集可以具有作为样本或点特征空间的中心(质心),并且可以具有边界或范围。
聚类可以作为数据分析活动提供帮助,以便了解更多关于问题域的信息,即所谓的模式发现或知识发现。例如:
聚类还可用作特征工程的类型,其中现有的和新的示例可被映射并标记为属于数据中所标识的群集之一。虽然确实存在许多特定于群集的定量措施,但是对所识别的群集的评估是主观的,并且可能需要领域专家。通常,聚类算法在人工合成数据集上与预先定义的群集进行学术比较,预计算法会发现这些群集。
有许多类型的聚类算法。许多算法在特征空间中的示例之间使用相似度或距离度量,以发现密集的观测区域。因此,在使用聚类算法之前,扩展数据通常是良好的实践。
一些聚类算法要求您指定或猜测数据中要发现的群集的数量,而另一些算法要求指定观测之间的最小距离,其中示例可以被视为“关闭”或“连接”。因此,聚类分析是一个迭代过程,在该过程中,对所识别的群集的主观评估被反馈回算法配置的改变中,直到达到期望的或适当的结果。scikit-learn 库提供了一套不同的聚类算法供选择。下面列出了10种比较流行的算法:
每个算法都提供了一种不同的方法来应对数据中发现自然组的挑战。没有最好的聚类算法,也没有简单的方法来找到最好的算法为您的数据没有使用控制实验。在本教程中,我们将回顾如何使用来自 scikit-learn 库的这10个流行的聚类算法中的每一个。这些示例将为您复制粘贴示例并在自己的数据上测试方法提供基础。我们不会深入研究算法如何工作的理论,也不会直接比较它们。让我们深入研究一下。
在本节中,我们将回顾如何在 scikit-learn 中使用10个流行的聚类算法。这包括一个拟合模型的例子和可视化结果的例子。这些示例用于将粘贴复制到您自己的项目中,并将方法应用于您自己的数据。
1.库安装
首先,让我们安装库。不要跳过此步骤,因为你需要确保安装了最新版本。你可以使用 pip Python 安装程序安装 scikit-learn 存储库,如下所示:
接下来,让我们确认已经安装了库,并且您正在使用一个现代版本。运行以下脚本以输出库版本号。
运行该示例时,您应该看到以下版本号或更高版本。
2.聚类数据集
我们将使用 make _ classification ()函数创建一个测试二分类数据集。数据集将有1000个示例,每个类有两个输入要素和一个群集。这些群集在两个维度上是可见的,因此我们可以用散点图绘制数据,并通过指定的群集对图中的点进行颜色绘制。这将有助于了解,至少在测试问题上,群集的识别能力如何。该测试问题中的群集基于多变量高斯,并非所有聚类算法都能有效地识别这些类型的群集。因此,本教程中的结果不应用作比较一般方法的基础。下面列出了创建和汇总合成聚类数据集的示例。
运行该示例将创建合成的聚类数据集,然后创建输入数据的散点图,其中点由类标签(理想化的群集)着色。我们可以清楚地看到两个不同的数据组在两个维度,并希望一个自动的聚类算法可以检测这些分组。
已知聚类着色点的合成聚类数据集的散点图接下来,我们可以开始查看应用于此数据集的聚类算法的示例。我已经做了一些最小的尝试来调整每个方法到数据集。3.亲和力传播亲和力传播包括找到一组最能概括数据的范例。
它是通过 AffinityPropagation 类实现的,要调整的主要配置是将“ 阻尼 ”设置为0.5到1,甚至可能是“首选项”。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,我无法取得良好的结果。
数据集的散点图,具有使用亲和力传播识别的聚类
4.聚合聚类
聚合聚类涉及合并示例,直到达到所需的群集数量为止。它是层次聚类方法的更广泛类的一部分,通过 AgglomerationClustering 类实现的,主要配置是“ n _ clusters ”集,这是对数据中的群集数量的估计,例如2。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个合理的分组。
使用聚集聚类识别出具有聚类的数据集的散点图
5.BIRCHBIRCH
聚类( BIRCH 是平衡迭代减少的缩写,聚类使用层次结构)包括构造一个树状结构,从中提取聚类质心。
它是通过 Birch 类实现的,主要配置是“ threshold ”和“ n _ clusters ”超参数,后者提供了群集数量的估计。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个很好的分组。
使用BIRCH聚类确定具有聚类的数据集的散点图
6.DBSCANDBSCAN
聚类(其中 DBSCAN 是基于密度的空间聚类的噪声应用程序)涉及在域中寻找高密度区域,并将其周围的特征空间区域扩展为群集。
它是通过 DBSCAN 类实现的,主要配置是“ eps ”和“ min _ samples ”超参数。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,尽管需要更多的调整,但是找到了合理的分组。
使用DBSCAN集群识别出具有集群的数据集的散点图
7.K均值
K-均值聚类可以是最常见的聚类算法,并涉及向群集分配示例,以尽量减少每个群集内的方差。
它是通过 K-均值类实现的,要优化的主要配置是“ n _ clusters ”超参数设置为数据中估计的群集数量。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以找到一个合理的分组,尽管每个维度中的不等等方差使得该方法不太适合该数据集。
使用K均值聚类识别出具有聚类的数据集的散点图
8.Mini-Batch
K-均值Mini-Batch K-均值是 K-均值的修改版本,它使用小批量的样本而不是整个数据集对群集质心进行更新,这可以使大数据集的更新速度更快,并且可能对统计噪声更健壮。
它是通过 MiniBatchKMeans 类实现的,要优化的主配置是“ n _ clusters ”超参数,设置为数据中估计的群集数量。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,会找到与标准 K-均值算法相当的结果。
带有最小批次K均值聚类的聚类数据集的散点图
9.均值漂移聚类
均值漂移聚类涉及到根据特征空间中的实例密度来寻找和调整质心。
它是通过 MeanShift 类实现的,主要配置是“带宽”超参数。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,可以在数据中找到一组合理的群集。
具有均值漂移聚类的聚类数据集散点图
10.OPTICSOPTICS
聚类( OPTICS 短于订购点数以标识聚类结构)是上述 DBSCAN 的修改版本。
它是通过 OPTICS 类实现的,主要配置是“ eps ”和“ min _ samples ”超参数。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,我无法在此数据集上获得合理的结果。
使用OPTICS聚类确定具有聚类的数据集的散点图
11.光谱聚类
光谱聚类是一类通用的聚类方法,取自线性线性代数。
它是通过 Spectral 聚类类实现的,而主要的 Spectral 聚类是一个由聚类方法组成的通用类,取自线性线性代数。要优化的是“ n _ clusters ”超参数,用于指定数据中的估计群集数量。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,找到了合理的集群。
使用光谱聚类聚类识别出具有聚类的数据集的散点图
12.高斯混合模型
高斯混合模型总结了一个多变量概率密度函数,顾名思义就是混合了高斯概率分布。它是通过 Gaussian Mixture 类实现的,要优化的主要配置是“ n _ clusters ”超参数,用于指定数据中估计的群集数量。下面列出了完整的示例。
运行该示例符合训练数据集上的模型,并预测数据集中每个示例的群集。然后创建一个散点图,并由其指定的群集着色。在这种情况下,我们可以看到群集被完美地识别。这并不奇怪,因为数据集是作为 Gaussian 的混合生成的。
使用高斯混合聚类识别出具有聚类的数据集的散点图
在本文中,你发现了如何在 python 中安装和使用顶级聚类算法。具体来说,你学到了:
如何利用python批量生成本地ip的实例详解
本文实例讲述了python批量生成本地ip地址的方法。分享给大家供大家参考。具体分析如下:
这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
# Filename: AddIPAliases.py
import re,sys,socket,struct
# 1. 判断IP地址是否合法; 2. 判断用户输入的IP是否在Class A,Class B 或 Class C中
def CheckIP(IP,IPClassesInt):
regexIP=re.compile(’^()$’)
Checking=regexIP.match(IP)
if Checking==None:
IP=raw_input("亲!请输入合法的IP地址哈: ")
return CheckIP(IP,IPClassesInt)
else:
IPInt=struct.unpack(’!L’,socket.inet_aton(IP))
if IPInt not in range(IPClassesInt+1):
IP=raw_input("亲!您输入的IP地址不在Class A,Class B或Class C中,请阅读提示信息并重新输入IP地址:")
return CheckIP(IP,IPClassesInt)
else: return IP
# 判断输入的数字是否合法
def CheckIPCount(IPCount):
regexIPCount=re.compile(’d+’)
Checking=regexIPCount.match(IPCount)
if Checking==None:
IPCount=raw_input("亲!请输入合法的数量:")
return CheckIPCount(IPCount)
else: return IPCount
# 为用户生成指定数量的IP
def MakeIps(IPInt,IPCount,IPIntBool):
targetBat=open(’AddIPAliases.bat’,’w+’)
targetCSV=open(’AddIPAliases.csv’,’w+’)
# 判断IP地址的数量是否在Class A,Class B或Class C的范畴中
if int(IPCount)》(IPClassesInt-IPInt+1):
IPCount=raw_input("亲!您输入的IP数量超过了"+IPIntBoolTrue+"的范畴,请重新输入:")
return MakeIps(IPInt,IPCount,IPIntBool)
else:
for i in range(int(IPCount)):
IPIntTrans=socket.inet_ntoa(struct.pack("!L", IPInt))
IPInt+=1
targetBat.write(’netsh interface ip add address "本地连接" ’+IPIntTrans+’ ’+IPIntBoolTrue+’
’)
targetCSV.write(IPIntTrans+’
’)
targetBat.write(’pause’)
# Main 函数
print ’’’
**************************************************
以下信息能够帮助你更好的运行此脚本:
1. 在运行脚本前,请移步:控制面板-》查看网络-》本地连接-》属性-》IPv4,将自动获取IP改成手动
2. IP分为三类:
Class A:数量16777216,范围10.0.0.0 - 10.255.255.255
Class B:数量1048576, 范围172.16.0.0 - 172.31.255.255
Class C:数量65536, 范围192.168.0.0 _ 192.168.255.255
!!!所以大家在输入IP的时候,请保证您输入的IP属于这三个分类之中!!!
3. 如果你使用的是英文系统,请将自定义函数MakeIPs()中的“本地连接”改成“Local Area Connection”。
4. 脚本由于要对长整型的数据进行range(),所以计算时间有点长,请等待成功提示。
5. 在脚本存放的目录将会生成一个bat文件和csv文件,bat文件用于向系统中添加IP,生成成功后请手动运行它,csv文件用于在Jmeter中调用这些IP。
6. 如果想清除在系统中插入的IP,请移步:控制面板-》查看网络-》本地连接-》属性-》IPv4,将手动获取IP改成自动获取IP
**************************************************
’’’
# 将各个Class的起始和结束的IP地址转换成整数
IPClasses=
IPClassesInt=
for i in range(len(IPClasses)):
IPClassesInt.append(struct.unpack(’!L’,socket.inet_aton(IPClasses)
# 用户输入
IP=raw_input("请输入起始IP地址:")
IPCount=raw_input("请输入生成的IP数量:")
# 判断输入是否合法
IPAddress=CheckIP(IP,IPClassesInt)
IPCount=CheckIPCount(IPCount)
IPInt=struct.unpack(’!L’,socket.inet_aton(IPAddress))
IPIntClassABool=IPInt in range(IPClassesInt+1)
IPIntClassBBool=IPInt in range(IPClassesInt+1)
IPIntClassCBool=IPInt in range(IPClassesInt+1)
IPIntBool={"ClassA":}
IPIntBoolTrue=
for i in range (len(IPIntBool)):
if True in IPIntBool.values():
IPIntBoolTrue.append(IPIntBool.keys())
IPIntBoolTrue.append(IPIntBool.values())
break
# 调用函数为用户生成IP地址
MakeIps(IPInt,IPCount,IPIntBoolTrue)
print "Bat文件生成完毕,请移步至存放的脚本的文件夹找到并运行此文件。"【相关推荐】
1. Java获取本地IP方法
2. Win10系统如何查看自己的IP地址
3. 详细介绍Python中and和or实际用法
4. 分享python中and / or 的运算逻辑实例教程
python怎么制作游戏脚本
本文将以4399小游戏《宠物连连看经典版2》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对完成游戏脚本。
浏览器打开游戏窗口(单个一个窗口),游戏主要界面截图需要两个坐标(左上角坐标和右下角坐标)来确定,原点一般是屏幕左上角,不确定坐标点值的同学,可以全屏截图,用图片软件查看坐标值。(推荐学习:Python视频教程)
获取窗口句柄,这里就是浏览器标题栏的标题了(右键-查看源代码-title,加上软件名)比如:“宠物连连看经典2,宠物连连看经典版2小游戏,4399小游戏 www.4399.com - Google Chrome“。获取窗口句柄就可以开始了。
总体开发思路:截取游戏主图 ---》 分割成小图 ---》 对比每个小图,对比图片相识度,编号存入矩阵 ---》 对矩阵进行可连计算 ---》 模拟点击。
获取窗口句柄,把窗口置顶
python可以使用win32gui模块调用Windows API实现对窗口的操作,使用FindWindow()方法可以获取窗口的句柄(handle),需要传入两个参数,第一个为父窗口句柄(这里填0即可),第二个参数是窗口的名称(标签title - Google Chrome)。获取句柄之后然后通过SetForegroundWindows() 设置窗口在前面,这里传入游戏窗口的举报即可,代码如下:
import win32gui
class GameAssist:
def __init__(self, wdname):
"""初始化"""
# 取得窗口句柄
self.hwnd = win32gui.FindWindow(0, wdname)
if not self.hwnd:
print("窗口找不到,请确认窗口句柄名称:【%s】" % wdname )
exit()
# 窗口显示最前面
win32gui.SetForegroundWindow(self.hwnd)
if __name__ == "__main__":
# wdname 为连连看窗口的名称,必须写完整
wdname = u’宠物连连看经典版2,宠物连连看经典版2小游戏,4399小游戏 www.4399.com - Google Chrome’
demo = GameAssist(wdname)
demo.start()截取游戏界面,分割图标,图片比较
这里需要花费一些时间来校验程序,如果截取的图片不好,则会影响后续操作,所以比较主要的是确认游戏左上角和右下角这两个坐标值,以及每个小图标的宽高。如下图所示,先截取整个游戏界面图,然后分割小图标,接着对每个图标进行比较,然后以编号代替图标存入矩阵(这里的编号矩阵和游戏图不一致,原理一样)。
根据初始化设定的左上角和右下角两个坐标,使用ImageGrab.grab()方法进行截图,传入一个元组即可,然后对这个大图进行分割,切割成一个个小图标存入到images_list数组中。
def screenshot(self):
"""屏幕截图"""
# 1、用grab函数截图,参数为左上角和右下角左标
# image = ImageGrab.grab((417, 257, 885, 569))
image = ImageGrab.grab(self.scree_left_and_right_point)
# 2、分切小图
# exit()
image_list = {}
offset = self.im_width # 39
# 8行12列
for x in range(8):
image_list = {}
for y in range(12):
# print("show",x, y)
# exit()
top = x * offset
left = y * offset
right = (y + 1) * offset
bottom = (x + 1) * offset
# 用crop函数切割成小图标,参数为图标的左上角和右下角左边
im = image.crop((left, top, right, bottom))
# 将切割好的图标存入对应的位置
image_list = im
return image_list通过上面代码切割的小图标,转成数字矩阵,如果图标已经存入image_type_list则返回这个索引,如果不存在,则在追加进去,然后当前长度就是这个新加入图标的编号,代码如下所示:
def image2num(self, image_list):
"""将图标矩阵转换成数字矩阵"""
# 1、创建全零矩阵和空的一维数组
arr = np.zeros((10, 14), dtype=np.int32) # 以数字代替图片
image_type_list =
# 2、识别出不同的图片,将图片矩阵转换成数字矩阵
for i in range(len(image_list)):
for j in range(len(image_list)):
im = image_list
# 验证当前图标是否已存入
index = self.getIndex(im, image_type_list)
# 不存在image_type_list
if index 《 0:
image_type_list.append(im)
arr = len(image_type_list)
else:
arr = index + 1
print("图标数:", len(image_type_list))
self.im2num_arr = arr
return arr上面的getIndex就是对比图片,判断图标是否出现过(是否已存在image_type_list中,没出现则追加进去),这里使用汉明距离判断两个图片的相识度,设置阀值10,当小于阀值则认为是同一个图片,具体代码如下:
# 检查数组中是否有图标,如果有则返回索引下表
def getIndex(self,im, im_list):
for i in range(len(im_list)):
if self.isMatch(im, im_list):
return i
return -1
# 汉明距离判断两个图标是否一样
def isMatch(self, im1, im2):
# 缩小图标,转成灰度
image1 = im1.resize((20, 20), Image.ANTIALIAS).convert("L")
image2 = im2.resize((20, 20), Image.ANTIALIAS).convert("L")
# 将灰度图标转成01串,即系二进制数据
pixels1 = list(image1.getdata())
pixels2 = list(image2.getdata())
avg1 = sum(pixels1) / len(pixels1)
avg2 = sum(pixels2) / len(pixels2)
hash1 = "".join(map(lambda p: "1" if p 》 avg1 else "0", pixels1))
hash3 = "".join(map(lambda p: "1" if p 》 avg2 else "0", pixels2))
# 统计两个01串不同数字的个数
match = sum(map(operator.ne, hash1, hash3))
# 阀值设为10
return match 《 10程序核心-图标连接算法(路径寻找)
这里仅对算法代码进行简单分析,如果对程序不好理解,可以留言,后续可以图文分析。
通过上面的开发流程,基本获取如下这样的矩阵,只要比较两个编号相同的值进行可连路径寻找,如果找到即进行模拟点击操作。这里简单介绍下游戏规则:8行乘12列游戏图标区域,外围的0其实表示寻找路径的时候可以通过,例如坐标(1, 1)可以与(1,10)进行连接、(7, 1)和(7,2)进行连接。
arr = [
,
,
,
,
,
,
,
,
,
]法的思路:路径的寻找首先是寻找一个坐标的横向竖向可以直接相连的坐标集合,比如坐标p1(1,1)这样的集合有,然后再对p1和p2的可连坐标集合进行比较,如果集合中坐标也有可连,则表示p1和p2可连,很明显,(0,1)和(0,10)为同一行且可连,这样就表示p1和p2两点存在可连路径了,代码如下所示:
简单分析下代码实现过程:在isReachable()传入两个需要比较的坐标值,然后分别获取两个点横竖向(isRowConnect()、isColConnect())可以连接的坐标集合,最后再对集合进行遍历比较是否存在可连的,如果存在则表示传入的两个坐标是可以连接的。
# 是否为同行或同列且可连
def isReachable(self, x1, y1, x2, y2):
# 1、先判断值是否相同
if self.im2num_arr:
return False
# 1、分别获取两个坐标同行或同列可连的坐标数组
list1 = self.getDirectConnectList(x1, y1)
list2 = self.getDirectConnectList(x2, y2)
# print(x1, y1, list1)
# print(x2, y2, list2)
# exit()
# 2、比较坐标数组中是否可连
for x1, y1 in list1:
for x2, y2 in list2:
if self.isDirectConnect(x1, y1, x2, y2):
return True
return False
# 获取同行或同列可连的坐标数组
def getDirectConnectList(self, x, y):
plist =
for px in range(0, 10):
for py in range(0, 14):
# 获取同行或同列且为0的坐标
if self.im2num_arr == 0 and self.isDirectConnect(x, y, px, py):
plist.append()
return plist
# 是否为同行或同列且可连
def isDirectConnect(self, x1, y1, x2, y2):
# 1、位置完全相同
if x1 == x2 and y1 == y2:
return False
# 2、行列都不同的
if x1 != x2 and y1 != y2:
return False
# 3、同行
if x1 == x2 and self.isRowConnect(x1, y1, y2):
return True
# 4、同列
if y1 == y2 and self.isColConnect(y1, x1, x2):
return True
return False
# 判断同行是否可连
def isRowConnect(self, x, y1, y2):
minY = min(y1, y2)
maxY = max(y1, y2)
# 相邻直接可连
if maxY - minY == 1:
return True
# 判断两个坐标之间是否全为0
for y0 in range(minY + 1, maxY):
if self.im2num_arr != 0:
return False
return True
# 判断同列是否可连
def isColConnect(self, y, x1, x2):
minX = min(x1, x2)
maxX = max(x1, x2)
# 相邻直接可连
if maxX - minX == 1:
return True
# 判断两个坐标之间是否全为0
for x0 in range(minX + 1, maxX):
if self.im2num_arr != 0:
return False
return True学习这样一个游戏辅助脚本,对于个人培养编程兴趣也是有很多帮助的,在工作之余不失为一个好的消遣方式,以后会多向这些方向研究学习。
更多Python相关技术文章,请访问Python教程栏目进行学习!

更多文章:
jfreechart 极坐标设置线条颜色(各位,怎样修改 matlab 中极坐标生成的图像线条的宽度求程序指导! 谢谢了!!!)
2025年8月9日 12:00
appear后面可以加名词吗(高考英语备考之 appear的用法)
2025年9月17日 03:30
django框架安装过程(京东云擎怎么搭建django 框架)
2025年7月24日 02:00
index加match函数出错(excel中INDEX和MATCH函数出现的问题)
2026年1月3日 23:00
routes插件(模拟火车2019机车插件和线路插件安装在哪里怎么激活求大神解答!!)
2025年7月11日 16:45
手机java运行库下载(三星C3300K手机下载JAVA游戏详细方法)
2026年1月12日 09:00
雅马哈音响portable(为什么存储卡里的歌在可插卡蓝牙音响上有些能放,有些不能放)
2026年8月5日 16:15
易语言源码忘记保存奔溃怎么找回(易语言源码丢失,用什么恢复软件恢复后可以用)
2025年12月9日 05:45














