page contents

用python解九宫格以及画图

像这个九宫格,首先就是画单独的方型,这个函数要自己写: import turtle as tt.speed(0)def zfx(a=200): for i in range(4): t.forward(a) t.left(90) 然后再写一个函数,主要是为了给正方形...

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

v2-d2ccc6e311f8a5c5180c75116702e776_hd.jpg演示图

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

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的难度,能快快看到学习的成果,这样就有兴趣能学下去。


  • 发表于 2020-02-20 16:04
  • 阅读 ( 708 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章