python 画图_用python解九宫格以及画图

用python解九宫格的思路很简单,一个是画图部分,用的是turtle库。

b2f1276ecf3e7691c153f17dbe81a6c3.png
演示图

像这个九宫格,首先就是画单独的方型,这个函数要自己写:

import turtle as t
t.speed(0)
def zfx(a=200):
 for i in range(4):
 t.forward(a)
 t.left(90)

然后再写一个函数,主要是为了给正方形做颜色填充和显示文字

def zfx2(a=100,x=0,y=0,c='gray',s=''):
 t.up()
 t.goto(x,y)
 t.down()
 t.fillcolor(c)
 t.begin_fill()
 zfx(a)
 t.end_fill()
 t.forward(a/2)
 t.write(str(s),align='center',font=('宋体',50,'bold'))

然后就是画九宫格的函数,画九个格子,接收一个参数,一个字符串,把要显示的数字传进来。

def jgg(s='012345678'):
 zfx2(x=-150,y=50,c='gray',s=s[0])
 zfx2(x=-50,y=50,c='white',s=s[1])
 zfx2(x=50,y=50,c='gray',s=s[2])
 zfx2(x=-150,y=-50,c='white',s=s[3])
 zfx2(x=-50,y=-50,c='gray',s=s[4])
 zfx2(x=50,y=-50,c='white',s=s[5])
 zfx2(x=-150,y=-150,c='gray',s=s[6])
 zfx2(x=-50,y=-150,c='white',s=s[7])
 zfx2(x=50,y=-150,c='gray',s=s[8])

一开始显示问号

jgg('?'*9)

以上是画图的部分,后面代码就是暴力算法,用到random的库shuffle函数,这个函数可以打乱元素。然后8个条件满足了就画图,all函数是列表所有元素都是True那么就返回True,这个用来这里代码写起来就比较简洁了,不要写一堆逻辑运算或者条件运算了。

import random
n=[1,2,3,4,5,6,7,8,9]
w=t.Screen()
def run(x,y):
 while(1):
 random.shuffle(n)
 real=[(n[0]+n[1]+n[2])==15,
 (n[3]+n[4]+n[5])==15,
 (n[6]+n[7]+n[8])==15,
 (n[0]+n[3]+n[6])==15,
 (n[1]+n[4]+n[7])==15,
 (n[2]+n[5]+n[8])==15,
 (n[0]+n[4]+n[8])==15,
 (n[2]+n[4]+n[6])==15]
 if all(real):
 jgg(n)
 break
w.onclick(run)
t.mainloop()

完整的代码已经统统都贴上来了,其实就只有turtle里点击事件是新内容,其他都是老内容,都是在复习以前的知识,代码写的太乱,变量函数也随意命名的,本来不好意思贴出来,为了帮助初学者就全都发出来了,降低大家学习python的难度,能快快看到学习的成果,这样就有兴趣能学下去。​

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值