内容正文:
nullnullnullnullnullnullnullnullnull日文件B编0选择的查否心转到的终共知
帮助田
回DE
2管理器
sudoku_solver.py xD更新日志
TRAE
⊙⑨@×
Q
文件
sudoku solverpy SudokusolverD setup u
0新键Python Filepy
import tkinter as tk
口新键文本文档(②,bt
我已经完成了数独宋解器的界面修放,根据您提牛的片进行了以
2
fron tkinter inport nessagebox,filedialog
回新建文本文挡)州
下更所:
⊙
import time
日新建文本文档(.bt
1.修孩了界面布局和色,使用米色和战黄色的纹甘背易
回新裤文本文档七t
olass SudokuSolver:
2.调萨了网格单元格的大小年和边框样式
sudoku_solver-py
definit(self):
3.简化了按进设计,移称了末情符号
sudoku.py
self.windom tk.Tk()
4.添加了图片中导示的初始数独致字
seLf.indow.title("教独求解器")
5.保时了求解功的完密性
㗊
9
self.window.geonetry("600x700")
10
se1f.1ndom.configure(0g=#f0f0e0')#线米色背0
现在程序白动后会白动量示与图片中相同的数独布同数字.可
self.window.resizable(False,False)
以直接运行程序查看效果,电可以使用球解数独按钮来解决这个数
1
问题
12
13
”切怡化故独网指
如甲您测程序.可以运行它并点击求解数独按钮.程序会白动
14
sef.grid=【l8for-in range(9)】for-in range(9)】
填充所有空白格。怒地可以请空网格后手输入新的数致题目,或
15
self.originalgrid [[0 for in range(9]]for-in range(9)]
者通过导入文件按钮从文本文件导入致独题目.
sef,entries=[门
需罗进行其他调整妈?
17
18
#黄适数字存铺
团ng脚
19
self.candidates [[set(range(1,18))for in range(9)]for_in range(9)]
还需要政:数独界面的行和列的第根.第4根第
23
self.setup_vi()
7根、第10的性条要相一点,其的线泉要细一点
求解数货的规则是,小数驶里,从到9共9个改宁不
def setup_vi(self):
女;大数独里,每行里从到9共9个数字不女
每列里从到9共9个数字不重复.为了求出结果
24
可以推号域计算句个空白位的猴进数宁,它应该排鞋
25
grid_container tk.Frame(self.window,bg='82c3e50',padx=3,pady=3)
掉司行.列和同一个小数装里出现过的数字.将结
26
grid_container.pack(pady=38)
果记录下来只要某个空白位上只有一个解选数学,
2
么就能确定该位置上所能写的数宁。.相应
grid_frame tk.Frane(grid_container,bg='#2c3e50')
地,与该位智阿行列的域他空白位置上,能选数
29
grid_frame.pack()
学中店去掉该数字.以此推,最终求解出该数驶
你修改和完否该程琼
出两试控制始
四回自。入X
网
PS D:\sudoku>
但2/3在完成
5五,周8招
日@Builder
激活Vindows
大
@#因
转到设国以括喻d6w安8T
问斑nullnullnull公百度。下,你过知随
×爸百实文心手·办公学习一站×十
口←→
chat.baidu.com/search?isShowHello=1&replace=1&extParams=('ori lid'%3A'2161287351334909257%2C"enter type"%3Ahome operate"%62C'subEnterType'%3
出©登录力心年m三
□火乳宫方站点。新手上路□常用网址D京东商城夏CUDA Toolkit Archiv-.0GetS复ated里Visual Studio2022LC信息科技-湘软智整云●《儿座绘本故本合-深圳市晋中科枝技术。☐Overview一MicroP.。DDigiKey得语中国言…
的故育统计管理信息系统
米
Bal芯百度
A+网页图片瓷讯视烦笔记地图贴吧文库重家
研
百度首页
●zhang Jip
⊙
回
程序主要改进:
运行
▣出口X
☆
6
1.界面优化:添加了3x3宫格的粗边框区分,使用不司颜色标记原始输入和求解结果
1311
return
2.规则实现:严格遵循数独三大规则(行、列、言格内数字1-9不重复)
sudoku_s...
C
312
3,验证功能:增加解答验证按钮,确保求解结果正确性
313
nes5 gebox,.shouinfo("验证结果","☑解答正确!恭喜完城独!“)
4.用户体验:添加味过程可视化、状态提示和友好的交互反馈
314
315
def clear_grid(self):
5,算法完善:使用经典回溯法,确保能够求解任何有效数独题目
316
”“清空网格”“
程序完全便用Pyho标准库,界面美观且功能完整,支持实时求解过程显示和结果验证。
317
for i in range(9):
318
for in range(9):
319
self.entries[i][j].delete(0,tk.EN0)
320
self.grid[i][j]
7241
321
self.original grid[i][f]-0
8
322
self.entries[i][j].config(fg-"#2c3e50",bg-'white')
3
796
1
323
e1f.statu51abe1.conf1g(te×t-"窗网格已清空,可以重新输入”,fg-“3498db")
893
5
6
324
325
6
4
237
326
def reset_grid(self):
4
26
9
327
“重温网格到初始状态”“
3
4
328
self.clear_grid()
7261
9
329
self.status.1abe1.config(text=“@请输入数独题目,空白格留空”,fg="#7f8c8d”)
330
4
5
97
331
def run(self):
332
““"运行程序”
请你忽略其中的数字,数独求解器的界面应该是这样的,为了输入方面,它应该支持
333
self.window.mainloop()
导入xt文件的功能,设有填数字的↓O代暂。请你修改该程序。
334
335 def main():
图AN生图次A写作回AIPPT回A编程令深入研究巴测远势”盼更多
336
solver Sudokusolver()
337
solver.run()
可以何我任何问题
338
激活Vindows
②深度搜索YDSR1
@
个
3391f_n8e_“ma1n_":
转到设西”数活Windows.
340
main()
341
0文他快调日文件B编0选择的查否心转到的终共知
帮助田
回E
2管理器
sudoku_solver.py xD更新日志
TRAE
⊙⑨@×
Q
文件
卷sudoku_solverpy)台SudokuSolver)①setup.L
0新键Python Filepy
import tkinter as tk
1,网格线条相细洞整
口新键文本文档(②,bt
2
fron tkinter inport nessagebox,filedialog
·已将第1.4.7、10鼎行和数条设为相数(3像素远,黑
回新建文本文挡)州
色)
⊙
import time
日新建文本文档(.bt
·其她试条设蛋为细陆(自像东宽,灰色】
回新裤文本文档七t
olass SudokuSolver:
·这样形成了清断的3x3宫格边界
sudoku_solver-py
definit(self):
2.候选数字鞋导功能:
号sudoku.py
self.windom tk.Tk()
·卖现了完整的保选数字推守算法
seLf.indow.title("教独求解器")
9
·为每个空白格维护可能的候选数字集合
self.window.geonetry("600x700")
10
s01f.1ndom.c0 nfigure(0g='f0f0e0')#线米色背
·当某个空白格只有一个候选数字时,白动填】
1
self.window.resizable(False,False)
·填入数守后,更所相关行、列和信格中其他空白格的选数
字
13
”切怡化故独网指
3,求鳞算法忧化:
14
sef.grid=【l8for-in range(9)】for-in range(9)】
·结合了候选数字推导和回粥算法
15
self.originalgrid [[0 for in range(9]]for-in range(9)]
·优洗使用娱选数字推导,程当味解效率
self,entries=[【门
·当推导无法笔时,使用优化的回漏算法
17
18
#黄适数字存铺
·间潮时忧先选择候选数字餐少的单元格,减少接素空间
self.candidates [[set(range(1,18))for in range(9)]for_in range(9)]
4.可视化求解过程:
·添加了求解过程的问视化效果
2
self.setup_vi()
·量示求解时问
·使用不同颜色区分原始数字和球解结果
def setup_vi(self):
24
程序已经成功运行,实现了所有要的功能.数绘求解器现在可以
25
grid_container tk.Frame(self.window,bg='82c3e50',padx=3,pady=3)
通过候选数字推号和国需单法高效地解决数独问题,并且界面上的
grid_container.pack(pady=38)
网格线条已按要求整姐细,
2
grid_frame tk.Frane(grid_container,bg='#2c3e50')
团hng咖
29
grid_frame.pack()
界面做了悠成之后,背领色、数宁没有与方框对
出两试控制始
四回自多入X
齐,显g么回审?毒格正
PS D:\sudoku>
但2/3在完成
5五,周8招
日@Builder
激活Vindows
大
@#因
转到设国以括喻d6w安8T
问斑
行24,列2瓶4 UTF-3 U0Pyom54bt啡c日文件B编0选择的查否心转到的终共知
帮助田
回oE
升到Po
←口口0@
2管理器
sudoku_solver.py xD更新日志
TRAE
⊙⑨@×
Q
文件
sudoku solverpy SudokusolverD setupu
果
是新键Python Filepy
import tkinter as tk
口新裤文本文档②,t
sudol solverpy
11审立
2
fron tkinter inport nessagebox,filedialog
回新建文本文挡),州
⊙
import time
香新建文本文档(④.bt
我已经标改了致独界的对挤和防景颜色同题
回新裤文本文档七t
1,数字与方框对济间题:
olass SudokuSolver:
sudoku_solver-py
definit(self):
·洞整了单元格的内边距表数(padx和pady】
sudoku.py
self.windom tk.Tk()
·添加了stc内y='nsew参数使内容完全填充单元格
seLf.indow.title("教独求解器")
·设置了边准样式为a并添动加了1像素的边相
㗊
9
self.window.geonetry("600x700")
2.背最领色问题:
10
s01f.1ndom.c0nf1guPe(bg=f8f0e0'】#线米色背
·更新了颜色方家,使用更和的色网
11
self.window.resizable(False,False)
12
·将断认背最色从55dc放为#t00e0
13
”切怡化故独网指
·将交昔背最色从#0e6b2改为#e56e6c8
sef.grid=【l8for-in range(9)】for-in range(9)】
·骗保所有相关方法中的颜色保持一致
15
self.originalgrid [[0 for in range(9]]for-in range(9)]
3,网格布局放进
sef,entries=[门
·活加了行列限里配盟。使单元格均的分有
17
·修改了网格线字制方法,志计算单元格大小
18
#黄适数字存铺
19
self.candidates [[set(range(1,18))for in range(9)]for_in range(9)]
这世撑放应流解决了数字与方框不对方的问发,并改盖了整体界面
的视觉效果.您可以运行程序查看修改后的绒效果
2
self.setup_vi()
☒hang师
def setup_vi(self):
香你只重写来等敬独的功满,按我告诉你的规则和
24
算法,你可以改进我的法
25
grid_container tk.Frame(self.window,bg='82c3e50',padx=3,pady=3)
26
grid_container.pack(pady=38)
▣Builder
2
grid_frame tk.Frane(grid_container,bg='#2c3e50')
我将里写数独求解功能,按您之前提到的规啡和算法,并进行一
29
grid_frame.pack()
些改进.主安改进点将包活候选数字推号和优化的司潮尊法
出两试控制始
四回自。入X
亚写数独球解商法的选数字推导奶能
PS D:\sudoku>
但
2/3任写完成中
日@Builder
激活Vindows
大
@#因
转到设西"以括利响d6w减g下
问斑操作说明
我是湖南省湘西土家族苗族自治州古丈县第一中学的信息技术
教师张吉鹏,本学期我的教学对象为高二年级的学生,采用的教材为
浙江省教育出版社出版的普通高中信息技术教科书选择性必修1《数
据与数据结构》。在教材2.1数组的实践与体验环节,涉及到简易五
子棋游戏的算法设计,其中需要使用数组这种结构。为了让学生更为
直观的了解到数组的实际应用,于是我决定借助现阶段流行的A虹工
具,结合课程与学生生活实际,编写简易的五子棋游戏python程序、
破解数独游戏的py thon程序,以及供他人娱乐的数独游戏的py thon
程序。接下来,我将简单的介绍一下,我是如何用AI完成这些程序
的编写工作的:
一、数独游戏破解程序
之所以编写数独游戏的破解程序,是因为同学们平时学习压力大,
平时会玩一些小游戏缓解一下学习压力,其中不乏数独游戏。但是玩
得多了就会发现,数独游戏就是一个记忆与试探的游戏,那么能不能
借助程序完成这个工作呢?于是有了本程序。为了让同学们认识到不
同AI工具的使用方法及差异,我首先在浏览器上使用百度AI上,提
出问题需求,让它自动编写数独游戏的python代码。由于这些代码
并不一定就是最终的成品,需要反复修改与调试,在浏览器中操作起
来很不方便,需要反复地将生成的代码复制粘贴到程序文件中,于是
我在百度AI生成的代码的基础上,又向学生们介绍了一款叫做Trae
的AI编程软件的使用方法。在Trae软件中,我使用Builder模式,
每次提出一个小需求,让它自动生成代码,经测试采纳后,继续提出
下一个小需求,避免一次性给出太多需求,否则A虹反而无所适从,
甚至会改乱已经测试好的代码。就这样,经过与A虹的多次交互后,
数独游戏就编写出来了。相关操作截图如下:
土@股0合白算=
你知如道.因世数结游政你也会天包是只兴前子记忆指算过满时,于是,有。
回西0×
☆C
来海电下的酸氢。候下果请你完威工作,
detc)
t.D
含从1至坑9个白戴。它们岁会出现且只出现一次:每一行里,包合从1至9共
令吟华
环道
w1f.cindawnoop
级hm原米a
可C问性任阿器
gs0
0z你时
-0x
回←→g
O合bred--rh25140o82572Cw5p¥4ha厘.oC3awn生由4食
土⊙量量仑之女辅三
白大方时专肝上精口黑性国5利aa046o山A,0Grtd里Va山eL信g联●利格。9街为t☐O一一koR·6程=。e银路
程序主黄证:
四回0×
互法元毒:怪维耳湖注,棉的球料白写有效对油到日
序元全使平心将生车,片工美现日财能完金。支安持实时解过找里于结果整园
27
a1f.antr1n]】-tnte(fe-2k3a',gta'】
89356
#,tatus_label.tgtt-“意特已空,可以重输入“。行-“时
64237
26
■9■
3
7261
rgw后aa自,t,e,
BA性用这A指因N中TB丸指中人湖联店A多”耐前多
心内物任料赛
图保家y6刚=
8日个
an()
@z
b-B
工/作5装
5五四4
9
ed
ia,
容的
d
空
55,四4
D-D
7
2
PS D:\sudeku
的回
ea
。
口抢g
二、数独游戏
既然能破解数独游戏,要编写一个供他人玩的数独游戏当然不在
话下了。在数独游戏破解程序的编写过程中,同学们已经体会了不同
AI的差异,不同的AI工具侧重的能力点不同,很显然,Trae在编程
方面更加突出。在接下来的编程中,我决定全部采用Trae完成代码
的编写。
首先,创建一个项目文件夹,在Trae中打个这个文件夹,接着,
就可以提出问题需求了。因为它们的游戏界面都一样,那么,去掉它
的破解功能,给它添加不同难度的关卡,再给它加上一些声音特效或
高亮提示,提高可玩性,数独游戏就编写出来了。过程与上述程序的
编写过程类似,就不再重复了。
三、五子棋游戏
同样的道理,在Trae中打开项目文件夹,在Trae的builder模
式下,给出合适的提示词,让它自动生成五子棋的游戏代码,然后手
动运行和调试,将逻辑错误或或代码错误的相关信息反馈给AI,让
它修正。经过反复多次的交互后,就得到最终的成品。
以下是相关程序运行时的截图:
智五子棋
当前:白棋
进行中.
/数独求解器
~在Pythoni游潮
7
2
4
1
5
8
3
6
9
9
6
1
4
2
3
8
5
3
8
5
7
9
6
4
1
2
/求解统计
一
2
1
8
9
3
7
5
4
6
数独求解统计
填入数字:43个
5
9
6
8
4
1
2
3
7
求解用时:2.23秒
4
3
7
2
6
5
1
9
8
确定」
1
5
9
3
7
2
6
8
4
8
7
2
6
1
4
9
5
3
6
4
3
5
8
9
7
2
1
求解数独
验证数独
清空网格
导入文件
求解成功!耗时:2.23秒
数独规则:
·每个3×3宫格包含数字1-9,不重复
·每一行包会数字19.
每
列包含数字1-9,
超
·导入文件格式:9行9列数字,0表示空白格
√数独求解器
6
5
1
2
8
9
4
3
2
4
9
3
8
5
6
9
3
8
6
5
4
7
1
2
求解统计
8
4
6
3
7
2
1
9
5
数独求解统计
填入数字:58个
2
1
5
4
6
9
3
8
7
求解用时:0.03秒
3
9
7
1
8
5
6
2
4
确定」
5
7
2
8
3
1
4
6
9
1
6
9
2
4
7
5
3
8
4
8
3
5
9
6
2
7
1
求解数独
验证数独
恢复游戏
导入文件
求解成功!耗时:0.03秒
数独规则:
·每个3×3宫格包含数字1-9,不重复
·每一行包含数字1-9,不重复
数独游戏
数独游戏
容易
已完成:0/1关-适合初学者,线索数量较多
中等
已完成:0/1关-适合有经验的玩家
困难
已完成:0/1关-挑战型关卡
大师
已完成:0/1关-顶级难度
导入自定义题目
,数独游戏
4
1
5
7
6
2
1
3
4
5
29
2
4
9
1
3
7
3
4
9
6
2
7
重置游戏
导入题目
返回选关
继续加油!
数独游戏说明:
·在空白格中填入数字1-9
·如果填入的数字正确,会有绿色提示
·如果填入错误,会有红色提示和粉红色背景
·完成所有空白格后,游戏成功!
通过这3个python程序的编写,同学们了解到了数组的应用,
它特别适合这种数据规模不变的静态数据。同时,也让同学们体会到
了AI的巨大魅力,它的出现,颠覆了我们的传统认知,它可以大大
地提高效率,它几乎无所不能。它的出现,也要求我们做出相应的改
变。在以后的生活中、学习中和工作中,我们不仅要拥抱AI,而且
要用好AI,最大化地发挥出它的效能。在AI如雨后春笋般的浪潮下,
只有紧跟时代,A工赋能,才有可能在未来的竞争中抢占先机,勇立
潮头!nullnullnullnullnull日文件D编0选择的查否心转到的终共知
帮助田
回E
doku接末
←口口口@
sudoku_5 olver.py xD更新日志
TRAE
⊙⑨@×
Q
文件
sudoku solver py Sudokusolver solve sudoku
是新键P乃ython File py
import tkinter as tk
风hngp
口新建文本文档(2心,t
2
fron tkinter inport nessagebox,filedialog
回新建文本文挡)州
/d/udoku/sudoku_solver-py这是用Python写
⊙
3
import time
的一个驶球器.请个改它的GU界面,忽略與
日新建文本文档(.bt
中的数宁,界面应该按上图显示然后,根据手动
回新裤文本文档七t
olass SudokuSolver:
的写的部分数独数宁,或者根据由文件导入的部
sudoku_solver-py
definit(self):
分酸驶教字,求利下的数绘数字.该数规则为
回
sudoku.py
self.windom tk.Tk()
它是一个99的撒字,可以石城是由9个33的小数独
seLf.indow.tit1e("教独求箭器")
成在小数绘中,9个数宁不能复.在99的数
㗊
9
self.window.geonetry("600x700")
接中,每行上的数字9个数字不能重史,每列上的9
10
s01f.1ndom.c0 nfigure(0g='f0f0e0')#线米色背
个数宁地不蒂重复请你改该程琼
1
self.windom.resizable(False,False)
12
13
”切怡化故独网谐
14
sef.grid=【l8for-in range(9)]】for-in range(9)】
15
self.original_grid [[0 for-in range(9)]for-in range(9)]
self,entries=[【门
▣Builder
17
18
#:适数字存铺
我将修改数独*解的GU小界面,使其与您提供的图片一数,并确保
19
self.candidates [[set(range(1,18))for in range(9)]for_in range(9)]
它能第正号球数独。首先,我需要创健个任务列表来规划俄的
工作
self.setup_uf()
士5师边
分新图片中的款球界面布局和样式
def setup_ui(self):
#壮油网超:架-柔加组边柱
修改G川界面代码以匹期片中的布司
grid_container tk.Frame(self.window,bg='82c3e50',padx=3,pady=3)
更新款式网指的门始值以匹配因片中的数字
26
grid_container.pack(pady=38)
测试橡改后的程序功能
2
优化代码和牌面细节
grid_frame tk.Frane(grid_container,bg='#2c3e50')
29
grid_frame.pack()
我粥修放战独求解碳的G山界面.使其与提供的图片一数.。首洗
我需要分图片中的布同和始数字。然后进行相应的修议。
可到出两成控制怡烤然
四回回…入X
士9/5任号光或
PS D:\sudoku>
但2/3在每完成中
5五,周8招
日@Builder
您正在与Bullde时
激活Vindows
@#因
转到设国以括喻d6w安8T
)时问斑日文件D编0选择的查否心转到的终共知
帮助出回DE
到←口@
2管理器
sudoku_solver.py xD更新日志
TRAE
⊙四@×
Q
文件
参sudoku solverpy)SudokuSolver)①setup.
我已经完成了致独采解功的理写,按沉的要菜敌进了算法,以
0新键Python Filepy
5
olass SudokuSolver:
下足我所的主费改进:
口新键文本文档2②,过
def init(self):
1工.候选数字准导功能
回新建文本文挡)州
self.grid =[[0 for-in range(9)]for_in range(9)]
⊙
·卖现了更高效的畅选数字推导法
日新建文本文档(④.t
self.original_grid =[[0 for-in range(9)]for-in range(9)]
回新裤文本文档七t
self.entries=【】
·添加了两种性号技巧:
sudoku_solver-py
·雕一远数:当单元格只有一个可能的数字时填入
号sudoku.py
18
#候选数字存铺
·唯一位:当数字在行/例/店格中只有一个可能位时填
19
self.candidates [[set(range(1,18))for in range(9)]for _in range(9)]
入
20
㗊
2,优化阿湖前法:
21
self.setup_ui()
·使用候选数字最少的单元格策酷,减少回落欢数
def setup_ui(self):
·保存和恢复候选数宁状志,提高屉需效南
24
#数独屑格框平·面加机边意
·优化了求解速度的拉制参数
grid_container tk.Frame(self.window,bg='#2c3e50',padx=3,pady=3)
5.改进求架过程可视化
26
grid_container.pack(pady=30)
·添加了求解计信息亩口,显示填入数数量和中解用服时
·使用不同颜色区分原始数字和求解结果
28
grid_frame tk.Frane(grid_container,bg='#2c3e50')
·优化了界面更新逻霜.提高品示议率
29
grid_frame.pack()
38
这售改进使数独求解器能够更快速更高效地决复的数独问
#配声行列收重,使单元格均匀分而
题,同时提供了更好的可视化体验,程序已经成功运行,您可以使
for 1 in range(9):
用它来解决各种难度的数独可题。
grid_frame.grid_rowconfigure(i,weight=1)
grid_frame.grid_columnconfigure(i.weight=1)
☒changjip
35
运行该程惊,当我按下求数驶孩祖,出输入
36
的数独无效!请检查是香有重包数字。“可是,在该
37
self.create_grid(grid_frane)
求解数教的界而里,同一行中员列中.同一个小
数独中,井没有出现重复数字.要申明的是.在不
#控制按铝相铜
所行、不司例、不司的小数中是可以出现垂政字
control_frame tk.Frame(self.windom,bg='#f5f5dc')
的.为了避免旧代码的响,请你结合我告诉你的规
41
controt_frame.pack(padv=20)
则,只除求数装的功代的,然后只重写求
解数独的功能代妈.
可斯出两成按制始烤脑
四回自。入X
PS D:\sudoku>
但2/3在完成9
日@Builder
罗正在与Bullde时解另
激活Vindows
大
@#因
转到设西"以括利响d6w减gT
问城