row=0
col=0
def __init__(self, row, col):
self.row=row
self.col=col
def copy(self):
return Point(row=self.row, col=self.col)
#初始框架
import pygame
import random
#初始化
pygame.init()
W=800
H=600
ROW=30
COL=40
size=(W,H)
window=pygame.display.set_mode(size)
pygame.display.set_caption('贪吃蛇')
bg_color=(255,255,255)
snake_color=(200,200,200)
head=Point(row=int(ROW/2), col=int(COL/2))
head_color=(0,128,128)
snakes=[
Point(row=head.row, col=head.col+1),
Point(row=head.row, col=head.col+2),
Point(row=head.row, col=head.col+3)
]
#生成食物
def gen_food():
while 1:
pos=Point(row=random.randint(0,ROW-1), col=random.randint(0,COL-1))
#
is_coll=False
#是否跟蛇碰上了
if head.row==pos.row and head.col==pos.col:
is_coll=True
#蛇身子
for snake in snakes:
if snake.row==pos.row and snake.col==pos.col:
is_coll=True
break
if not is_coll:
break
return pos
#定义坐标
food=gen_food()
food_color=(255,255,0)
direct='left' #left,right,up,down
#
def rect(point, color):
cell_width=W/COL
cell_height=H/ROW
left=point.col*cell_width
top=point.row*cell_height
pygame.draw.rect(
window, color,
(left, top, cell_width, cell_height)
)
pass
#游戏循环
quit=True
clock=pygame.time.Clock()
while quit:
#处理事件
for event in pygame.event.get():
if event.type==pygame.QUIT:
quit=False
elif event.type==pygame.KEYDOWN:
if event.key==273 or event.key==119:
if direct=='left' or direct=='right':
direct='up'
elif event.key==274 or event.key==115:
if direct == 'left' or direct == 'right':
direct='down'
elif event.key==276 or event.key==97:
if direct == 'up' or direct == 'down':
direct='left'
elif event.key==275 or event.key==100:
if direct == 'up' or direct == 'down':
direct='right'
#吃东西
eat=(head.row==food.row and head.col==food.col)
#重新产生食物
if eat:
food = gen_food()
#处理身子
#1.把原来的头,插入到snakes的头上
snakes.insert(0, head.copy())
#2.把snakes的最后一个删掉
if not eat:
snakes.pop()
#移动
if direct=='left':
head.col-=1
elif direct=='right':
head.col+=1
elif direct=='up':
head.row-=1
elif direct=='down':
head.row+=1
#检测
dead=False
#1.撞墙
if head.col<0 or head.row<0 or head.col>=COL or head.row>=ROW:
dead=True
#2.撞自己
for snake in snakes:
if head.col==snake.col and head.row==snake.row:
dead=True
break
if dead:
print('死了')
quit=False
#渲染——画出来
#背景
pygame.draw.rect(window, bg_color, (0,0,W,H))
#蛇头
for snake in snakes:
rect(snake, snake_color)
rect(head, head_color)
rect(food, food_color)
#
pygame.display.flip()
#设置帧频(速度)
clock.tick(8)
#收尾工作
这是一个简易版贪吃蛇的代码,虽然结构简单,但是该有的功能都是完整的,可玩性也不错
猜数游戏.pyimport random, easygui
number = random.randint(1, 99)
guess = 0
tries = 0
easygui.msgbox("I have a secret, can you guess?It's a number from 1 to 99. I'll give you 7 tries.")
while guess != number and tries <7:
guess = easygui.integerbox("What's your guess?", tries+1)
if guess <number:
easygui.msgbox("Your guess is too low.")
elif guess >number:
easygui.msgbox("Your guess is too high.")
tries = tries + 1
if guess == number:
easygui.msgbox("Ha-ha, you're so clever! You got my secret! ")
else:
easygui.msgbox("No more guesses! Better luck next time!")
easygui.msgbox(secret, "secret")
注:此代码是Python2的,我试过Python3运行不了。另外,需要easygui。
随着数据挖掘分析在企业业务层面的深度应用,我们会发现,在实际业务场景中,数据分析工作已经逐渐分为2个层次;较为流程化但与业务深度结合的数据分析工作,会更倾向于让业务人员通过专业分析工具进行自主 探索 分析,比如我们的Tempo大数据分析平台,就可以通过拖拽式、智能化的简便 *** 作,帮助业务人员快速上手数据分析工作,快速将业务数据价值变现。
而针对一些更加细致、专业化的建模分析需求,其实还是通过代码的方式去实现更加高效灵活。Tempo大数据分析平台正是考虑到广大专业数据分析人员的实际需求,专门开发了 【扩展编程】 这一功能模块,让自定义编程和平台中已有的节点结合使用,快速提高数据分析工作效率!
为了让广大数据分析师在Tempo平台中,既可以通过编程实现更加灵活的建模,也能避免原生Python编程的一些使用局限,我们还通过广泛的用户调研,在【扩展编程】模块设计了 3个提高Python编程易用性的小功能 ,下面我们一起来看看这三个功能都具体解决了哪些问题~
1、Python洞察不直观 ,分析结果可读性低
我们常说“一图胜千言”,对于数据分析工作来说更是如此。分析结果最终还是要直接赋能实际业务,由于Python代码行的形式让分析结果可读性极低,分析人员无法快速实现对数据的直观 探索 分析,导致整体工作效率的降低。
2、Python调试分析难 ,校验调试流程多,反复折腾易出错
调试和分析是Python开发中非常重要的环节,但代码 校验报错结果难查看 的问题,让很多数据分析人员大伤脑筋。
尤其是现在很多企业数据分析项目是在自己的数据平台中进行的,分析人员只能把平台中的代码复制到第三方平台中进行校验,调试好后再粘贴回平台中运行,非常麻烦。
3、Python运行总“缺包” ,写码大半天,报错一瞬间
在一般的企业数据分析项目中,预先有可能会设置有多套Python环境,版本并不统一。这就会导致分析人员常常并不清楚自己当前使用的到底是哪一套Python环境,在编码时引用的Python包,在不同的Python环境上运行很有可能会出现缺失,引起代码执行报错,而且这种错误信息并不好排查,一旦报错只能从头再来,让程序员们白白做了无用功。
以往专业数据分析人员遇到以上问题,只能选择用更多的时间和精力去修复bug,那么在我们的Tempo大数据分析平台之中,又是如何解决这些问题,让 Python编程的应用 更简便、更高效、更适应企业实际需求呢?
1、图形化洞察,快速 探索 数据价值
针对传统编码数据分析方式难以直观展示数据分析结果的缺点,Tempo大数据分析平台——扩展编程模块特别支持在代码区域设置 通过matplotlib/seabron等图形方法实现节点洞察 ,校验通过后,就可以直接在洞察区域中查看绘制的图形,比如:折线图、直方图、条形图、饼图等。
以后业务部门简单的可视化分析需求就可以直接在建模挖掘分析的同时快速产出,立等可取,无需再周转其他可视化分析工具,大大提高的数据价值变现的效率。
2、控制台,让调试分析更便捷
针对传统Python编程调试报错信息不好查看的问题, Tempo大数据分析平台—扩展编程模块中的控制台功能,可以 直接在指定区域中显示错误信息和代码中需要print的部分 ,便于使用者快速发现问题,立即调整代码。
除了帮助专业数据分析人员提高工作效率,控制台中的【示例】小模块还内置了常用的参考代码,可以帮助一些不太能熟练应用Python编程语言的小白用户,通过复用或小部分修改逻辑代码的方式,也能快速完成数据逻辑处理工作。用好这个功能,团队内部的技能培训也能更有章法了呢!
3、快速查询Python环境和包版本,事前预防,再也不怕“丢包缺包”
Python编程最怕丢包缺包问题,在Tempo大数据分析平台中,我们内置了Python环境版本和包版本的信息查询组件,分析人员在编码之前,可以预先查询一下当前的Python环境版本和包版本,如果发现有缺包就可以在编码工作开始之前补充安装,把“丢包缺包”造成的代码报错风险降到最低。
今天的Tempo小课堂中,小T主要给大家介绍了如何通过Python扩展编程的三个小功能,帮助代码偏好的专业数据分析人员减少不必要的麻烦 *** 作,提高工作效率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)