精华内容
下载资源
问答
  • icom7300_send_recieve:用于向ICOM IC-7300发送和接收命令的Python脚本
  • 用于AI,机器学习和深度学习的IC和IP的列表。 AI芯片(IC和IP)编辑ST(Linkedin)欢迎访问我的微信博客StarryHeavens以上更多与AI芯片相关的文章最新更新添加Synaptics Katana平台新闻。 添加Graphcore MK2性能基准...
  • netlist_parser.py 基于 Python 的网表解析器,包括 Verilog 和 SPICE
  • 具有一些功能的,不太容易使用的用于IC的API的API包装器。 主要特征 具有IC地图或用户具有的所有功能的用户和地图类 与这些类有关的几个功能 尚未真正优化,但应该可以正常工作 正在安装 需要Python 。 您可以从...
  • (IC3),2016 年第九届国际会议,pp. 1-6,IEEE”。 为您自己的应用程序更改“test_functions.m”和“test_functions_range.m”。 使用的代码模板类似于链接中给出的代码:和 mathworks 中 GSA 的 matlab 版本。 此...
  • 用于访问OpenNGC数据库数据的python接口 描述 PyOngc提供了一个python模块来访问有关NGC和IC对象的天文数据。 数据基于OpenNGC数据库 。 它由python模块和名为(guess what)ongc的命令行界面组成,可用于快速...
  • Python statsmodels库用于时间序列分析

    千次阅读 2020-05-29 21:24:49
    statsmodels.tsa包含可用于时间序列分析的模型和函数。 基本模型包括单变量自回归模型(AR)、向量自回归模型(VAR)和单变量自回归移动平均模型(ARMA)。非线性模型包括马尔可夫切换动态回归和自回归。 它还包括...

    statsmodels v0.11.1
    https://www.statsmodels.org/stable/tsa.html
    如有翻译总结错误,欢迎指出!

    时间序列分析
    statsmodels.tsa包含可用于时间序列分析的模型和函数。
    基本模型包括单变量自回归模型(AR)、向量自回归模型(VAR)和单变量自回归移动平均模型(ARMA)。非线性模型包括马尔可夫切换动态回归和自回归。
    它还包括时间序列的描述性统计,如自相关、偏自相关函数和周期图,以及ARMA或相关过程的相应理论性质。它还包括处理自回归和移动平均滞后多项式的方法。此外,还提供了相关的统计测试和一些有用的帮助函数。

    估计是通过精确或条件最大似然估计发或条件最小二乘法,或使用卡尔曼滤波器或直接滤波器。

    目前,函数和类必须从相应的模块中导入,但主类将在statsmodels.tsa命名空间。statsmodels.tsa包含以下模型结构:
    ar_模型:单变量自回归过程,条件和精确最大似然估计和条件最小二乘估计
    arima_模型:单变量ARMA过程,条件和精确最大似然估计和条件最小二乘估计
    状态空间:全面的状态空间模型规范和估计。请参阅状态空间文档。
    向量ar,var:向量自回归过程(var)和向量误差修正模型、估计、脉冲响应分析、预测误差方差分解和数据可视化工具。
    kalmanf:基于Kalman滤波器的ARMA及其它精确MLE模型的估计类
    AR MA_过程:给定参数arma过程的性质,包括arma、MA和AR表示之间的转换工具,以及acf、pacf、谱密度、脉冲响应函数等
    沙箱.tsa.fftarma:类似于arma_过程,但在频域工作
    tsatools:附加的辅助函数,用来创建滞后变量数组,为trend、detrend和类似的函数构造回归函数。
    过滤器:用于过滤时间序列的辅助函数
    状态切换:马尔可夫切换动态回归与自回归模型

    描述性统计和检验

    函数 用途
    statsmodels.tsa.stattools.acovf 估计自方差
    statsmodels.tsa.stattools.acf 计算自相关函数
    statsmodels.tsa.stattools.pacf 计算偏自相关函数
    statsmodels.tsa.stattools.pacf_yw 用非递归yule-walker估计偏自相关
    statsmodels.tsa.stattools.pacf_ols 用OLS计算偏自相关函数
    statsmodels.tsa.stattools.pacf_burg 计算Burg偏自相关估计
    statsmodels.tsa.stattools.ccovf 计算两个序列之间的互协方差
    statsmodels.tsa.stattools.periodogram 计算x的固有频率的周期图
    statsmodels.tsa.stattools.adfuller 单位根检验
    statsmodels.tsa.stattools.kpss Kwiatkowski-Phillips-Schmidt-Shin静止试验
    statsmodels.tsa.stattools.zivot_andrews Zivot-Andrews结构断裂单元根检验
    statsmodels.tsa.stattools.coint 一元方程的非协整检验
    statsmodels.tsa.stattools.q_stat 计算Ljung-Box Q统计量
    statsmodels.tsa.stattools.grangercausalitytests 2个时间序列的granger非因果检验
    statsmodels.tsa.stattools.levinson_durbin 自回归过程的Levinson-Durbin递归
    statsmodels.tsa.stattools.innovations_algo 将自方差转换为MA参数的创新算法
    statsmodels.tsa.stattools.innovations_filter 使用创新算法过滤观测值
    statsmodels.tsa.stattools.levinson_durbin_pacf 返回acf和ar系数的Levinson-Durbin算法
    statsmodels.tsa.stattools.arma_order_select_ic ARMA模型的信息准则
    statsmodels.tsa.x13.x13_arima_select_order 使用x12/x13 ARIMA执行季节性ARIMA模型自动识别
    statsmodels.tsa.x13.x13_arima_analysis 对月度或季度数据进行x13 arima分析

    预测

    AR模型
    statsmodels.tsa.ar_model.AutoReg 自回归AR(p)模型
    statsmodels.tsa.ar_model.AutoRegResults 保存拟合AR模型的结果
    statsmodels.tsa.ar_model.ar_select_order 自回归AR(p)模型阶数选择

    statsmodels.tsa.ar_model.AutoReg()使用OLS估计参数,
    并支持exogenous regressors(AR-X模型)和季节效应。
    以前的ar_model.AR()虽然还可以用,但是已经被弃用

    不建议使用
    statsmodels.tsa.ar_model.AR
    statsmodels.tsa.ar_model.ARResults
    ARMA和Kalman Filter模型
    statsmodels.tsa.arima_model.ARMA ARMA(p,q)模型
    statsmodels.tsa.arima_model.ARMAResults 保存拟合ARMA模型的结果
    statsmodels.tsa.arima_model.ARIMA ARIMA(p,d,q)模型
    statsmodels.tsa.arima_model.ARIMAResults 保存拟合ARIMA模型的结果 (属性)

    从0.11版开始,Statsmodels引入了一个专门针对ARIMA模型的新类。虽然这个类仍处于测试阶段,但它应该能满足大多数用户想要的功能:

    statsmodels.tsa.arima.model.ARIMA (ARIMA)模型及其扩展
    statsmodels.tsa.arima.model.ARIMAResults 保存拟合结果

    arima.model.ARIMA这个模型允许通过各种方法估计参数(包括通过Hannan-Rissanen方法的条件极大似然估计和通过Kalman滤波器的全极大似然估计)。由于它是SARIMAX模型的一个特例,它包含了状态空间模型的所有特征(包括预测/预测、残差诊断、仿真和脉冲响应等)。

    指数平滑(线性和非线性指数平滑模型可用)
    statsmodels.tsa.holtwinters.ExponentialSmoothing 霍尔特-温特指数平滑
    statsmodels.tsa.holtwinters.SimpleExpSmoothing 简单指数平滑法
    statsmodels.tsa.holtwinters.Holt 霍尔特指数平滑
    statsmodels.tsa.holtwinters.HoltWintersResults 霍尔特-温特指数平滑结果

    线性指数平滑模型也作为状态空间框架的一个特例单独实现。虽然这种方法不允许非线性(乘法)指数平滑模型,但它包含了状态空间模型的所有特征(包括预测/预测、残差诊断、仿真和脉冲响应等)。

    指数平滑(仅线性指数平滑模型可用)
    statsmodels.tsa.statespace.exponential_smoothing.ExponentialSmoothing 线性指数平滑模型
    statsmodels.tsa.statespace.exponential_smoothing.ExponentialSmoothingResults 结果

    ARMA移动平均过程
    以下是研究给定滞后多项式ARMA过程理论性质的工具

    statsmodels.tsa.arima_process.ArmaProcess 指定滞后多项式ARMA过程的理论性质。
    statsmodels.tsa.arima_process.ar2arma 找到ar过程的arma近似
    statsmodels.tsa.arima_process.arma2ar AR模型逼近有限滞后的ARMA过程
    statsmodels.tsa.arima_process.arma2ma 用MA近似ARMA过程的有限滞后
    statsmodels.tsa.arima_process.arma_acf ARMA过程的理论自相关函数
    statsmodels.tsa.arima_process.arma_acovf ARMA过程的理论自方差函数
    statsmodels.tsa.arima_process.arma_generate_sample 模拟ARMA的数据
    statsmodels.tsa.arima_process.arma_impulse_response 计算ARMA过程的脉冲响应函数(MA表示)
    statsmodels.tsa.arima_process.arma_pacf ARMA过程的理论偏自相关函数
    statsmodels.tsa.arima_process.deconvolve 由滞后多项式ar和ma给出ARMA过程的周期图
    statsmodels.tsa.arima_process.deconvolve 去卷积信号除数,n项多项式的除法
    statsmodels.tsa.arima_process.index2lpol 将系数展开为滞后多边形
    statsmodels.tsa.arima_process.lpol2index 从滞后多项式中去掉零点
    statsmodels.tsa.arima_process.lpol_fiar 分数积分的AR表示
    statsmodels.tsa.arima_process.lpol_fima 分数积分的MA表示
    statsmodels.sandbox.tsa.fftarma.ArmaFft arma过程的fft工具
    statsmodels.tsa.arima_process.lpol_sdiff 季节性差异的回归系数(1-L^s)
    展开全文
  • 用于网页分类的python工具包 web-classify用于网页分类的python工具包ProjectHomeDownloadsWikiIssuesSourceSummary|Updates|PeopleStar this ...
    Logo 
               
       Star this project
    Activity:  Medium
    Code license: 
    Apache License 2.0
    Labels:
    gearmanknnweb-classify
    Feeds:
    Project feeds
    Owners:
    l0he1g
    People details »

    本工具包将一些常用的网页分类不同语言的相关开源软件,如ictclas,BeautifulSoup,libsvm等进行封装组合,以方便用python进行网页分类相关程序的开发。

    # uitl:一些常用的开源软件包 ## ictclas:中文分词,包含词频统计,关键词提取,指纹提取等功能。不同的机器上使用,需要重新编译。

    ## ictclas.py:我对ictclas的python封装(其实就是简单的用python调用ictclas)

    使用说明: from mypack.util.ictclas import ICTclas ic = ICTclas( text ) ic.finger() #返回text的指纹 ic.words() #返回list:(word,num),(word,num),...

    ## smallseg:一个轻量级开源python分词程序

    使用说明: from mypack.util.smallseg.myseg import seg word_nums = seg( text ) #返回list:(word,num),(word,num),...

    ## htmlproc:一些常用的html处理程序

    ### BeautifulSoup.py 开源的html析取程序,网上文档:http://www.crummy.com/software/BeautifulSoup/documentation.zh.html

    ### chardet 自动编码检测与转换

    ### parser.py 对以上两个的封装

    使用说明: pr = Parser()
    if pr.parse( url ):
    print pr.get_html() #返回网页的html格式 print pr.get_text().encode('utf-8') #返回网页中的字符串
    ### crawl.py 使用pycurl的单个网页爬取程序,由于pycurl速度并不比urllib快,所以没啥用

    # classify:文本分类模块说明

    ## preprocess

    ### chi:卡方特征选择

    #### input:

    1. df_tb
    格式如下,book为word在book类的文档频率(int),total为各类的df之和,为word的总df: word|book|edu|finance|house|mil|sport|car|ent|game|lady|mobile|tech|total
    2. min_df

    ### tfidf:计算tfidf

    ### 使用说明

    1. config.py中设置所有的变量
    2. 执行db/create.py,创建数据库表 3. 爬取url 4. 执行chi模块:去低频词、卡方值计算、idf值计算 from mypack.classfiy.preprocess.chi import chi_compute chi_compute() 5. 执行卡方特征选择,构建新字典 from mypack.classify.preprocess.voca import read_voca,transform_samples voca = read_voca() transform_samples( voca ) 6. 预测 from mypack.classify.svm.predict import classify_text#对文本进行分类 from mypack.classify.svm.predict import classify_text#对url进行分类

    ## svm 里面有个predict.py,就是用svm来对网页进行分类,字典和已经训练好的svm 模型放在data/下

    如果要自己训练的话,自己下libsvm。liblinear用python不方便调用。

    # web_content_extract 网页正文提取

    ## 使用说明

    from mypack.web_content_extract.extract import Extractor extr = Extractor( url ) if extr.is_content_page(): #判断是否是正文页面
    text = extr.get_content() # 提取正文
    html = extr.get_content_with_format() #带html标签的正文
    images = extr.get_images() # 提取正文中的图片 title = extr.get_title() # 提取正文的标题
    confidence = extr.get_confidence() #是正文的置信度
    extr.get_detail()#详细分析信息

    # NOTICE ## ictclas使用前,需要先编译,如果是64位平台,先 ln -s ictclas ictclas64 ## libsvm.so 64位平台,需要先下载好libsvm,重新编译libsvm.so替换原来的

    posted on 2010-10-08 14:24 lexus 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lexus/archive/2010/10/08/1845802.html

    展开全文
  • Python 2.3. 以上版本可用,2.6 添加 start 参数。 遍历列表,并得到索引,索引值从0开始 x=['d','e','f'] for i,j in enumerate(x): print(i,j) 结果 0 d 1 e 2 f 配合笛卡尔积使用for循环,相当于双层for循环 ...

    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    Python 2.3. 以上版本可用,2.6 添加 start 参数。

    遍历列表,并得到索引,索引值从0开始

    x=['d','e','f']
    for i,j in enumerate(x):
        print(i,j)
    

    结果

    0 d
    1 e
    2 f
    

    配合笛卡尔积使用for循环,相当于双层for循环
    笛卡尔积用于遍历很好用

    a=['g','h']
    b=[4,6]
    #配合笛卡尔积,实现遍历
    from itertools import product
    #start=1,相当于索引值从1开始
    for i,(j,k) in enumerate(product(a,b),start=1):
        print(i,j,k)
    

    结果

    1 g 4
    2 g 6
    3 h 4
    4 h 6
    
    展开全文
  • ECCpy,一个用于Python中进行EC50计算的程序。 EC50或“半最大有效浓度”是化合物影响生物系统有效性的关键指标。 它通常用于药理学,生物学和生物化学。 通常通过使用Hill方程将剂量响应数据拟合为S形曲线来计算...
  • PythonPython小游戏-贪吃蛇大冒险

    万次阅读 多人点赞 2021-04-17 17:26:59
    是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),Python语言具有非常简洁且清晰的语法特点,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。目前,基于Python...

    一、前言

    距上次更新博客,又过去很长时间了,感觉再不更新一下,自己写博客的习惯就要废了,哈哈。从去年九月份开学之后,疫情学期期末考试开学考、实验室项目软著申请和新项目设计、课程集训等事情较多,没有很多时间;然后这个学期我到大三下学期,实验室工作交接完就准备考研,之后也没有很多时间来写博客,所以赶紧来更新一下,和大家分享一些知识和心得,希望喜欢的小伙伴可以点赞、收藏和关注,哈哈。

    二、贪吃蛇大冒险小游戏

    一、游戏简介

    1.1游戏操作及游戏规则
    (1)游戏开始后,通过键盘上下左右键控制贪吃蛇移动寻找食物;
    (2)贪吃蛇每吃一个食物,身长会增加一个单位;
    (3)在正常模式中,贪吃蛇如果碰到墙面或咬到自身,则游戏失败;
    (4)在可穿墙模式中,贪吃蛇可以穿过墙面,但咬到自身后,游戏失败。

    二、游戏总体设计

    2.1 游戏总体设计框架图
    在这里插入图片描述

    三、编译语言以及用到的库文件描述

    3.1 Python语言
    Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),Python语言具有非常简洁且清晰的语法特点,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。目前,基于Python语言的相关技术正在飞速发展,用户数量急剧增大,相关的资源越来越多。
    3.2 pygame库
    Pygame是跨平台Pyth,Pygame 作者是 Pete Shinners, 协议为 GNU Lesser General Public License。Pygame包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。基于这样一个设想,所有需要的游戏功能和理念(主要是图像方面)都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。
    3.3 random库
    Random是产生随机数的库,即随机数发生器,random产生的是伪随机数或者说是用一种复杂的方法计算得到的序列值,因此每次运算时需要一个不同的种子值。种子值不同,得到的序列值也不同。
    3.4 time库
    time库是Python中处理时间的标准库,用于计算机时间的表达,提供获取系统时间并格式化输出功能,提供系统级精确计时功能,也可用于程序性能分析。
    3.5 sys库
    sys.exit([ arg ])用于程序的退出,sys.exit(n) 退出程序,正常退出时exit(0)。这是通过引发SystemExit 异常来实现的,因此遵循finally语句的子句所指定的清理操作try ,并且可以拦截外层的退出尝试。可选参数arg可以是一个整数,给出退出状态(默认为零)或其他类型的对象。如果它是整数,则零被认为是“成功终止”,并且任何非零值等视为“异常终止”。

    四、游戏设计与实现

    4.1游戏整体设计

    • 1.定义贪吃蛇对象,包括蛇头和蛇身两个部分,蛇头单独设置,蛇身使用列表来存储;
      2.定义食物对象,包括食物对象的初始化、随机颜色和随机位置的设置;
      3.定义初始化界面,在该界面中设置文本为“正常模式”、“可穿墙模式”和“退出”的三个按钮供玩家选择;
      4.定义正常模式,包括游戏窗口显示、主循环和判断贪吃蛇死亡的设置;
      5.定义可穿墙模式,包括游戏窗口显示、主循环和判断贪吃蛇死亡的设置;
      6.定义游戏结束窗口,包括窗口显示和最后得分显示的设置。

    4.2主要函数解析

    • 4.2.1 new_food()函数
      食物对象初始化函数,传入形参为贪吃蛇蛇头坐标。当贪吃蛇吃掉食物后,通过该函数生成新的食物。通过传入形参判断新生成的食物坐标是否与蛇头坐标相同,若相同则重新生成新的坐标。
    • 4.2.2 start_game()函数
      正常模式的主循环函数,通过该函数进行正常模式下贪吃蛇和食物的初始化、玩家控制贪吃蛇运动、蛇头和蛇身的判断更新和得分统计实现。
    • 4.2.3 die_snake()函数
      正常模式下贪吃蛇死亡判断函数,传入形参为贪吃蛇蛇头和蛇身坐标数据。在该函数中设置布尔型变量die_flag,若死亡设置为Ture并返回,没有死亡为False。通过遍历蛇身存储列表,判断蛇身坐标是否与蛇头坐标相同,若相同则判定贪吃蛇咬到自身,死亡。同时,判断贪吃蛇是否撞墙,及判断蛇头的x和y坐标是否窗体的宽高,若超过则死亡。
    • 4.2.4 start_kgame()函数
      可穿墙模式的主循环函数,通过该函数进行可穿墙模式下贪吃蛇和食物的初始化、玩家控制贪吃蛇运动、蛇头和蛇身的判断更新和得分统计实现。
    • 4.2.5 through_snake()函数
      可穿墙模式下贪吃蛇死亡判断函数,传入形参为贪吃蛇蛇头和蛇身坐标数据。在该函数中设置布尔型变量die_flag,若死亡设置为Ture并返回,没有死亡为False。通过遍历蛇身存储列表,判断蛇身坐标是否与蛇头坐标相同,若相同则判定贪吃蛇咬到自身,死亡。
    • 4.2.6 show_end()函数
      游戏结束时,结束界面设置函数。在该函数中进行结束界面窗体的初始化,在窗体中显示玩家的最终得分,并在改函数中调用pygame库quit方法,使该库停止工作。
    • 4.2.7 into_game()函数
      游戏初始界面实现函数,在该函数中进行游戏初始界面窗体的初始化。在该界面窗体中设置文本为“正常模式”、“可穿墙模式”和“退出”的三个点击按钮,通过设置循环,调用button函数(详细见6.2.8)监听玩家的点击。
    • 4.2.8 button()函数
      游戏初始界面按钮监听函数,在该函数中实现对玩家鼠标点击事件和键盘输入事件的监听。并根据玩家选择,运行按钮对应的触发函数。即点击“正常模式”按钮,运行正常模式的主循环函数,以此类推。

    五、运行模块代码结构

    在运行模块,进行pygame库的初始化、设置游戏背景音乐、显示窗口各个参数的设置以及游戏初始界面的显示设置,具体结果代码如下图:
    在这里插入图片描述在这里插入图片描述
    六、游戏运行测试(截图)

    1. 游戏初始选择界面
      在这里插入图片描述

    2. 正常模式运行界面
      在这里插入图片描述

    3. 可穿墙模式运行界面在这里插入图片描述

    4. 游戏结束界面
      在这里插入图片描述
      七、游戏完整代码

    import sys
    import time
    import pygame
    from random import *
    # Position类,通过其构造函数,设置x和y
    class Position(object):
        def __init__(self, x, y):
            self.x = x
            self.y = y
    # 生成随机的食物
    def new_food(head):
        while True:
            new_food = Position(randint(0, 48) * 20, randint(0, 29) * 20)
            # 判断新生成的事物是否和贪吃蛇蛇头重合,重合则不创键
            if new_food.x != head.x and new_food.y != head.y:
                break
            else:
                continue
        return new_food
    # 绘制,在窗体中绘制贪吃蛇、食物
    # color:颜色,position: 坐标
    def rect(color, position):
        pygame.draw.circle(window, color, (position.x, position.y), 10)
    # 初始界面和游戏中点差退出游戏时
    def exit_end():
        pygame.quit()
        quit()
    # 游戏结束时,显示得分的窗体的设置
    def show_end():
        # 设计窗口
        # 定义窗口大小
        small_window = pygame.display.set_mode((960, 600))
        init_background = pygame.image.load("image/init_bgimg.jpg")
        small_window.blit(init_background, (0, 0))
        # 定义标题
        pygame.display.set_caption("贪吃蛇大冒险")
        # 定义背景图片
        font = pygame.font.SysFont("simHei", 40)
        fontsurf = font.render('游戏结束! 你的得分为: %s' % score, False, black)
        small_window.blit(fontsurf, (250, 200))
        pygame.display.update()
        time.sleep(2)
        pygame.quit()
        sys.exit()
    # 正常模式死亡设置
    # head: 蛇头, snake_body:蛇身
    def die_snake(head, snake_body):
        # 定义标志物,默认为false,true时判定贪吃蛇碰到自己,死亡
        die_flag = False
        # 遍历存放贪吃蛇位姿的列表,从第1个开始,(第0个位蛇头)
        for body in snake_body[1:]:
            # 如果蛇头的xy和蛇身xy相等,则判定相撞,设置flag为ture
            if head.x == body.x and head.y == body.y:
                die_flag = True
        # 若蛇头的xy在显示窗体外,或flag为true,则显示结束界面,并退出游戏
        if head.x < 0 or head.x > 960 or head.y < 0 or head.y > 600 or die_flag:
            pygame.mixer.music.stop()
            show_end()
    # 正常模式主体设置
    def start_game():
        # 定义存分数的全局变量
        global score
        global color
        color = (randint(10, 255), randint(10, 255), randint(10, 255))
        # 定义存放玩家键盘输入运动方向的变量,初始为向右
        run_direction = "right"
        # 定义贪吃蛇运动方向的变量,初始为玩家键入方向
        run = run_direction
        # 实例化蛇头、蛇身、食物对象
        head = Position(160, 160)
        # 初始化蛇身长度为3个单位
        snake_body = [Position(head.x, head.y + 20), Position(head.x, head.y + 40), Position(head.x, head.y + 60)]
        # 初始化食物位置
        food = Position(300, 300)
        # 死循环
        while True:
            window.blit(background, (0,0))
            # 监听玩家键盘输入的运动方向值,并根据输入转为up、down、right或left,方便程序中调用
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    show_end()
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_UP:
                        run_direction = "up"
                    elif event.key == pygame.K_RIGHT:
                        run_direction = "right"
                    elif event.key == pygame.K_LEFT:
                        run_direction = "left"
                    elif event.key == pygame.K_DOWN:
                        run_direction = "down"
            # 食物
            rect(color, food)
            # 蛇头
            rect(black, head)
            # 蛇身
            for pos in snake_body:
                rect(white, pos)
            # 判断贪吃蛇原运动方向与玩家键盘输入的运动方向是否违反正常运动情况
            if run == "up" and not run_direction == "down":
                run = run_direction
            elif run == "down" and not run_direction == "up":
                run = run_direction
            elif run == "left" and not run_direction == "right":
                run = run_direction
            elif run == "right" and not run_direction == "left":
                run = run_direction
            # 插入蛇头位置到蛇身列表中
            snake_body.insert(0, Position(head.x, head.y))
            # 根据玩家键入方向进行蛇头xy的更新
            if run == "up":
                head.y -= 20
            elif run == "down":
                head.y += 20
            elif run == "left":
                head.x -= 20
            elif run == "right":
                head.x += 20
            # 判断是否死亡
            die_snake(head, snake_body)
            # 判断蛇头和食物坐标,若相等,则加分,并生成新的食物
            if head.x == food.x and head.y == food.y:
                score += 1
                food = new_food(head)
                color = (randint(10, 255), randint(10, 255), randint(10, 255))
            else:
                snake_body.pop()
            font = pygame.font.SysFont("simHei", 25)
            mode_title = font.render('正常模式', False, grey)
            socre_title = font.render('得分: %s' % score, False, grey)
            window.blit(mode_title, (50, 30))
            window.blit(socre_title, (50, 65))
            # 绘制更新
            pygame.display.update()
            # 通过帧率设置贪吃蛇速度
            clock.tick(8)
    # 可穿墙模式死亡设置
    # head:蛇头,snake_body:蛇身
    def through_snake(head, snake_body):
        # 定义标志位
        die_flag = False
        # 遍历,蛇头碰到蛇身时,flag为true退出游戏
        for body in snake_body[1:]:
            if head.x == body.x and head.y == body.y:
                die_flag = True
        if die_flag:
            pygame.mixer.music.stop()
            show_end()
        else:  # 当蛇头的xy出窗体时
            # 四种穿墙情况,分别设置
            if head.x < 0:
                head.x = 960
            if head.x > 960:
                head.x = 0
            if head.y < 0:
                head.y = 600
            if head.y > 600:
                head.y = 0
    # 穿墙模式主体设置
    def start_kgame():
        global score
        global color
        color = (randint(10, 255), randint(10, 255), randint(10, 255))
        # 定义蛇初始方向
        run_direction = "up"
        run = run_direction
        # 实例化蛇头、蛇身、食物对象
        head = Position(160, 160)
        # 三格
        snake_body = [Position(head.x, head.y + 20), Position(head.x, head.y + 40), Position(head.x, head.y + 60)]
        # 初始化事物位置
        food = Position(300, 300)
        # 死循环,监听键盘键值
        while True:
            window.blit(background, (0, 0))
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    show_end()
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_UP:
                        run_direction = "up"
                    elif event.key == pygame.K_RIGHT:
                        run_direction = "right"
                    elif event.key == pygame.K_LEFT:
                        run_direction = "left"
                    elif event.key == pygame.K_DOWN:
                        run_direction = "down"
            # 食物
            rect(color, food)
            # 蛇头
            rect(black, head)
            # 蛇身
            for pos in snake_body:
                rect(white, pos)
            # 判断贪吃蛇原运动方向与玩家键盘输入的运动方向是否违反正常运动情况
            if run == "up" and not run_direction == "down":  # 若运动方向为向上,玩家输入运动方向向下,则违背贪吃蛇正常运动情况
                run = run_direction
            elif run == "down" and not run_direction == "up":
                run = run_direction
            elif run == "left" and not run_direction == "right":
                run = run_direction
            elif run == "right" and not run_direction == "left":
                run = run_direction
            # 插入蛇头位置到蛇身列表中
            snake_body.insert(0, Position(head.x, head.y))
            # 根据玩家键入方向进行蛇头xy的更新
            if run == "up":
                head.y -= 20
            elif run == "down":
                head.y += 20
            elif run == "left":
                head.x -= 20
            elif run == "right":
                head.x += 20
            # 穿墙实现
            through_snake(head, snake_body)
            # 判断是否加分和随机生成新的食物
            if head.x == food.x and head.y == food.y:
                score += 1
                food = new_food(head)
                color = (randint(10, 255), randint(10, 255), randint(10, 255))
            else:
                snake_body.pop()
            font = pygame.font.SysFont("simHei", 25)
            mode_title = font.render('穿墙模式', False, grey)
            socre_title = font.render('得分: %s' % score, False, grey)
            window.blit(mode_title, (50, 30))
            window.blit(socre_title, (50, 65))
            # 绘制更新
            pygame.display.update()
            # 通过帧率设置贪吃蛇速度
            clock.tick(8)
    # 监听函数,监听键盘输入
    # msg: 按钮信息,x: 按钮的x轴,y: 按钮的y轴,w: 按钮的宽,h: 按钮的高,ic: 按钮初始颜色,ac: 按钮按下颜色,action: 按钮按下的动作
    def button(msg, x, y, w, h, ic, ac, action=None):
        # 获取鼠标位置
        mouse = pygame.mouse.get_pos()
        # 获取键盘输入
        click = pygame.mouse.get_pressed()
        if x + w > mouse[0] > x and y + h > mouse[1] > y:
            pygame.draw.rect(window, ac, (x, y, w, h))
            if click[0] == 1 and action != None:
                action()
        else:
            pygame.draw.rect(window, ic, (x, y, w, h))
        # 设置按钮中的文字样式和居中对齐
        font = pygame.font.SysFont('simHei', 20)
        smallfont = font.render(msg, True, white)
        smallrect = smallfont.get_rect()
        smallrect.center = ((x + (w / 2)), (y + (h / 2)))
        window.blit(smallfont, smallrect)
    # 游戏初始界面,选择模式
    def into_game():
        into = True
        while into:
            window.blit(init_background, (0, 0))
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    exit_end()
            # 设置字体
            font = pygame.font.SysFont("simHei", 50)
            # 初始界面显示文字
            fontsurf = font.render('欢迎来到贪吃蛇大冒险!', True, black)  # 文字
            fontrect = fontsurf.get_rect()
            fontrect.center = ((width / 2), 200)
            window.blit(fontsurf, fontrect)
            button("正常模式", 370, 370, 200, 40, blue, brightred, start_game)
            button("可穿墙模式", 370, 420, 200, 40, violte, brightred, start_kgame)
            button("退出", 370, 470, 200, 40, red,brightred, exit_end)
            pygame.display.update()
            clock.tick(15)
    

    三、总结

    这是一个简单的Python小游戏,具体代码已贴在博客上。然后相关的技术文档、背景音乐、字体、代码等我也压缩上传到了csdn下载区中。
    https://download.csdn.net/download/weixin_45087775/16809231?spm=1001.2014.3001.5503

    展开全文
  • IceCream 经过充分测试,获得许可,并支持 Python 2、Python 3、PyPy2 和 PyPy3。 检查变量 你有没有打印过变量或表达式来调试你的程序? 如果您曾经输入过类似 print(foo('123')) 或更彻底的 print("foo('123')...
  • web-classify 用于网页分类的python工具包 本工具包将一些常用的网页分类不同语言的相关开源软件,如ictclas,BeautifulSoup,libsvm等进行封装组合,以方便用python进行网页分类相关程序的开发。# uitl:...
  • 该项目当前基于Python3.7。 警告:存储库已准备好迁移到Rust版本。 Sym-CTS流程大纲 划分 施工 正在缓冲 缓冲区大小 编程原理 面向对象编程 可配置的 可重用 如何使用 准备工具 python3和3rd-party软件包:numpy,...
  • 快速开始下载SDK掘金量化平台提供策略开发服务包(SDK)用于策略开发者实现自己的策略。SDK下载地址请点击这里。Python SDK支持Windows + Python2.7/3.6 + 32位/64位、Linux Python2/3 x64共六种版本,下载时找到对应...
  • 可以通过以下网址获得一份ic提要: ! 下面是后代的内容,因为饲料可以满足您的所有需求。 (或者如果您想要一些代码来生成有效的iCal文件) 无论如何,现在不再支持此功能,因为不再需要它。 说明(后代) 这...
  • Python模块大全

    万次阅读 2016-12-23 11:09:19
    Python模块
  • 下面是自己结合网上的一些爬虫代码修改的python代码,其可以无限制的爬百度图片,已经可以满足很多需求了。具体代码如下: #coding: utf-8 import os import re import urllib import urllib2 import ...
  • 一年一度的 Python 开发者调查报告终于发布了。该报告由 Python 软件基金会和 JetBrains 联合发起,已经持续三年,并且参与调查的开发者人数正在逐年上升。今年,全球来自 150 多个国家及地区的 24,000 名的 Python ...
  • 1. 首先安装python,我选择安装Anaconda (Windows 64-Bit Python 2.7 Graphical Installer 下载地址)。Anaconda的一些命令(在Anaconda的命令行窗口输入):conda list #该命令,将列出Anaconda安装的所有应用包,...
  • 目录许多人使用的第一种、被称为世界上增长最快的编程语言当然是 Python,可用于通用编程、数据科学、网站后端、GUI 以及几乎所有其他功能。最新的 3.7.0 版本刚发布不久。任何版本 Python 的发行,无论变化多小,在...
  • python之struct详解

    万次阅读 多人点赞 2018-05-23 18:20:29
    用处按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,不能传输int,此时先将int转化为字节流,然后再发送;按照指定格式将字节流转换为Python指定的数据类型;处理二进制数据,如果用struct来处理...
  • python struct 结构体

    万次阅读 多人点赞 2018-07-12 20:44:57
    有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重要的三个函数是pack(), unpack(), calcsize...
  • Python爬虫

    2021-07-16 23:21:35
    使用编程语言所编写的一个用于爬取web或app数据的应用程序 怎么爬取数据 1.找到要爬取的目标网站、发起请求 2.分析URL是如何变化的和提取有用的URL 3.提取有用的数据 爬虫数据能随便爬取吗? 遵守robots.txt协议 ...
  • python爬虫

    2019-08-25 11:18:57
    python爬虫基础 1、爬取网页的通用代码框架 通用代码框架可以使爬取网页变得更稳定有效。用requests库访问网页时不一定能成功,异常处理很重要。产生的异常如下所示: 可以用r.raise_for_status 检测访问是否成功,...
  • 本篇文章主要把《Python绝技:运用Python成为顶级黑客》中的代码敲一遍,学学Python安全相关的编程与思路,然后根据具体的情况修改一下代码。   第一章——入门 1、准备开发环境 安装第三方库: 安装Python-...
  • 1 C/C++ 调用 Python(基础篇)Python 本身就是一个C库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在Windows平台上,这个文件位于 %SystemRoot%\System32\python27.dll。你也...
  • python之成像库pillowpython提供了python image library图像库,处理图像功能,该库提供了广泛的文件格式支持,如JPEG、PNG、GIF、等,它提供了图像档案、图像显示、图像处理等功能PIL中所涉及到的基本概念包括,...
  • 这篇文章主要介绍了如何基于pythonnet调用halcon脚本,文中通过示例代码介绍的非常详细...halcon本身提供了c++与.NET的开发库,但无python库,网上有pyhalcon之类的库,但功能与原版并不一致。这片文章默认大家已经有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,772
精华内容 1,508
关键字:

python用于ic

python 订阅