<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8"><meta name="generator" content="pdf2htmlEX"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/base.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/13027471/raw.css"><script src="https://csdnimg.cn/release/download_crawler_static/js/compatibility.min.js"></script><script src="https://csdnimg.cn/release/download_crawler_static/js/pdf2htmlEX.min.js"></script><script>try{pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});}catch(e){}</script><title></title></head><body><div id="sidebar" style="display: none"><div id="outline"></div></div><div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/13027471/bg1.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x0 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">1</div></div><div class="t m0 x2 h4 y3 ff2 fs1 fc0 sc1 ls0 ws0">课程编号:</div><div class="t m0 x3 h5 y4 ff3 fs1 fc0 sc0 ls0 ws0">A0801051010</div><div class="t m0 x4 h6 y5 ff2 fs2 fc0 sc1 ls0 ws0">《<span class="ff3 sc0">Python<span class="_ _0"> </span></span>程序设计》<span class="_ _1"></span>实验报告</div><div class="c x5 y6 w3 h7"><div class="t m0 x6 h8 y7 ff2 fs3 fc0 sc1 ls0 ws0">姓<span class="_ _2"> </span>名</div></div><div class="c x7 y6 w4 h7"><div class="t m0 x8 h9 y7 ff4 fs3 fc0 sc1 ls0 ws0">学<span class="_ _3"> </span>号</div></div><div class="c x5 y8 w3 h7"><div class="t m0 x6 h8 y9 ff2 fs3 fc0 sc1 ls0 ws0">班<span class="_ _2"> </span>级</div></div><div class="c x7 y8 w4 h7"><div class="t m0 x8 h9 y9 ff4 fs3 fc0 sc1 ls0 ws0">指<span class="_ _4"> </span>导<span class="_ _4"> </span>教<span class="_ _4"> </span>师</div></div><div class="c x5 ya w3 h7"><div class="t m0 x6 h8 yb ff2 fs3 fc0 sc1 ls0 ws0">实<span class="_ _5"> </span>验<span class="_ _5"> </span>名<span class="_ _5"> </span>称</div></div><div class="c x9 ya w5 h7"><div class="t m0 xa h8 yb ff2 fs3 fc0 sc1 ls0 ws0">《<span class="ff3 sc0">Python<span class="_ _6"> </span></span>程序设计》综合实<span class="_ _1"></span>验开发与总<span class="_ _1"></span>结</div></div><div class="c x5 yc w3 ha"><div class="t m0 x6 h8 yd ff2 fs3 fc0 sc1 ls0 ws0">开<span class="_ _5"> </span>设<span class="_ _5"> </span>学<span class="_ _5"> </span>期</div></div><div class="c x5 ye w3 h7"><div class="t m0 x6 h8 yf ff2 fs3 fc0 sc1 ls0 ws0">开<span class="_ _5"> </span>设<span class="_ _5"> </span>时<span class="_ _5"> </span>间</div></div><div class="c x5 y10 w3 ha"><div class="t m0 x6 h8 y11 ff2 fs3 fc0 sc1 ls0 ws0">报<span class="_ _5"> </span>告<span class="_ _5"> </span>日<span class="_ _5"> </span>期</div></div><div class="c x5 y12 w3 hb"><div class="t m0 x6 h8 y13 ff2 fs3 fc0 sc1 ls0 ws0">评<span class="_ _5"> </span>定<span class="_ _5"> </span>成<span class="_ _5"> </span>绩</div></div><div class="c xb y14 w6 h7"><div class="t m0 x6 h9 y15 ff4 fs3 fc0 sc1 ls0 ws0">评<span class="_ _7"> </span>定<span class="_ _7"> </span>人</div></div><div class="c xb y16 w6 hc"><div class="t m0 x6 h9 yd ff4 fs3 fc0 sc1 ls0 ws0">评<span class="_ _4"> </span>定<span class="_ _4"> </span>日<span class="_ _4"> </span>期</div></div><div class="t m0 xc h4 y17 ff2 fs1 fc0 sc1 ls0 ws0">东北大学软件学院</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div></body></html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/13027471/bg2.jpg"><div class="c xd y18 w7 hd"><div class="t m0 x0 he y19 ff1 fs4 fc0 sc0 ls0 ws0">-<span class="_ _8"> </span>2<span class="_ _8"> </span>-</div></div><div class="t m0 xe hf y1a ff5 fs5 fc0 sc0 ls0 ws0">目录</div><div class="t m0 x2 h10 y1b ff5 fs4 fc0 sc0 ls0 ws0">一.实验目的<span class="_ _1"></span><span class="ff1">....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>..........<span class="_ _a"></span>3</span></div><div class="t m0 x2 h10 y1c ff5 fs4 fc0 sc0 ls0 ws0">二.实验内容<span class="_ _1"></span><span class="ff1">....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>..........<span class="_ _a"></span>3</span></div><div class="t m0 x2 h10 y1d ff5 fs4 fc0 sc0 ls0 ws0">三.实验环境<span class="_ _b"> </span><span class="ff1">Experiment<span class="_ _6"> </span>Environment........................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....<span class="_ _c"> </span>3</span></div><div class="t m0 x2 h10 y1e ff5 fs4 fc0 sc0 ls0 ws0">四.实验过程<span class="_ _1"></span>与分析<span class="ff1">...........................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>.....................<span class="_ _9"></span>...........<span class="_ _d"></span>4</span></div><div class="t m0 xf h10 y1f ff1 fs4 fc0 sc0 ls0 ws0">4.1<span class="_ _e"> </span><span class="ff5">基础实验</span>.....................................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>.......<span class="_ _d"></span>4</div><div class="t m0 x10 h10 y20 ff1 fs4 fc0 sc0 ls0 ws0">1.<span class="_ _e"> </span><span class="ff5">问题描述及分析<span class="_ _1"></span></span>........................<span class="_ _9"></span>.....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>.<span class="_ _f"></span>4</div><div class="t m0 x10 h10 y21 ff1 fs4 fc0 sc0 ls0 ws0">2.<span class="_ _e"> </span><span class="ff5">关键算法设计</span>........................................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>..........<span class="_ _f"></span>4</div><div class="t m0 x10 h10 y22 ff1 fs4 fc0 sc0 ls0 ws0">3.<span class="_ _e"> </span><span class="ff5">实现结果</span>................................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>.....................<span class="_ _9"></span>.....<span class="_ _d"></span>6</div><div class="t m0 xf h10 y23 ff6 fs4 fc0 sc0 ls0 ws0">4.2<span class="_ _e"> </span><span class="ff5">数据分析实验<span class="_ _1"></span><span class="ff1">...................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>................<span class="_ _10"> </span>8</span></span></div><div class="t m0 x10 h10 y24 ff1 fs4 fc0 sc0 ls0 ws0">4.2.1<span class="_ _e"> </span><span class="ff5">分析数据<span class="_ _1"></span>特征间的关系<span class="_ _1"></span>以及各个特征<span class="_ _1"></span>的分布与分散<span class="_ _1"></span>状况</span>.........................<span class="_ _9"></span>.........<span class="_ _a"> </span>8</div><div class="t m0 x10 h10 y25 ff1 fs4 fc0 sc0 ls0 ws0">4.2.2<span class="_ _e"> </span><span class="ff5">使用分组<span class="_ _1"></span>聚合方法进行<span class="_ _1"></span>数据分析</span>..................................<span class="_ _9"></span>.....................<span class="_ _9"></span>.................<span class="_ _10"> </span>1<span class="_ _1"></span>4</div><div class="t m0 x10 h10 y26 ff1 fs4 fc0 sc0 ls0 ws0">4.2.3<span class="_ _e"> </span><span class="ff5">数据预处<span class="_ _1"></span>理</span>..................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.........<span class="_ _1"></span>1<span class="_ _1"></span>8</div><div class="t m0 x10 h10 y27 ff1 fs4 fc0 sc0 ls0 ws0">4.2.4<span class="_ _e"> </span><span class="ff5">数据分析<span class="_ _1"></span></span>...................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>............<span class="_ _1"></span>2<span class="_ _1"></span>4</div><div class="t m0 x2 h10 y28 ff5 fs4 fc0 sc0 ls0 ws0">五.实验总结<span class="_ _1"></span><span class="ff1">....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>....................<span class="_ _9"></span>.....................<span class="_ _9"></span>........<span class="_ _d"></span>3<span class="_ _1"></span>1</span></div><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a><a class="l"><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/13027471/bg3.jpg"><div class="t m0 x11 h11 y29 ff7 fs4 fc0 sc0 ls0 ws0">《<span class="ff1">Python<span class="_ _6"> </span></span>程序设计》实验报告<span class="_ _11"> </span>东北大学软件<span class="_ _1"></span>学院</div><div class="c xd y2a w7 hd"><div class="t m0 x0 he y2b ff1 fs4 fc0 sc0 ls0 ws0">-<span class="_ _8"> </span>3<span class="_ _8"> </span>-</div></div><div class="t m0 x12 hf y2c ff5 fs5 fc0 sc0 ls0 ws0">一.实验目的</div><div class="t m0 x13 h12 y2d ff4 fs4 fc0 sc0 ls0 ws0">在基<span class="_ _1"></span>础<span class="_ _1"></span>实验<span class="_ _1"></span>中,<span class="_ _1"></span>能<span class="_ _1"></span>熟<span class="_ _1"></span>练运<span class="_ _1"></span>用<span class="_ _8"> </span><span class="ff1">Python<span class="_ _6"> </span></span>语言<span class="_ _1"></span>的基<span class="_ _1"></span>本<span class="_ _1"></span>语法<span class="_ _1"></span>、<span class="_ _1"></span>控<span class="_ _1"></span>制语<span class="_ _1"></span>句、<span class="_ _1"></span>函<span class="_ _1"></span>数、<span class="_ _1"></span>面<span class="_ _1"></span>向对<span class="_ _1"></span>象<span class="_ _1"></span>、<span class="ff1">GUI<span class="_ _6"> </span></span>等开</div><div class="t m0 x12 h12 y2e ff4 fs4 fc0 sc0 ls0 ws0">发一个应用类<span class="_ _1"></span>游戏。为后续<span class="_ _6"> </span><span class="ff1">Python<span class="_ _8"> </span></span>学习打下扎实<span class="_ _1"></span>基础。</div><div class="t m0 x13 h12 y2f ff4 fs4 fc0 sc0 ls0 ws0">在数据分析<span class="_ _1"></span>实验中,<span class="_ _12"></span>能熟练运用<span class="_ _6"> </span><span class="ff1">Python<span class="_ _8"> </span></span>列表、<span class="_ _12"></span>字典、<span class="_ _12"></span>集合、<span class="_ _12"></span>数组等<span class="_ _1"></span>数据结构以及<span class="_ _1"></span>索引和切片<span class="_ _1"></span>等</div><div class="t m0 x12 h12 y30 ff4 fs4 fc0 sc0 ls0 ws0">查询操<span class="_ _1"></span>作解决实<span class="_ _1"></span>际问题<span class="_ _1"></span>,熟<span class="_ _1"></span>练掌握<span class="_ _6"> </span><span class="ff1">Python<span class="_ _8"> </span></span>读写<span class="_ _1"></span>数据文<span class="_ _1"></span>件的方法<span class="_ _1"></span>,熟练<span class="_ _1"></span>使用<span class="_ _8"> </span><span class="ff1">Matp<span class="_ _1"></span>lotlib<span class="_ _8"> </span></span>数据<span class="_ _1"></span>可视<span class="_ _1"></span>化工</div><div class="t m0 x12 h12 y31 ff4 fs4 fc0 sc0 ls0 ws0">具,<span class="_ _9"></span>熟练使用<span class="_ _8"> </span><span class="ff1">p<span class="_ _1"></span>andas<span class="_ _8"> </span></span>数据分<span class="_ _1"></span>析库函数,基本掌握使用<span class="_ _8"> </span><span class="ff1">sc<span class="_ _1"></span>ikit-learn<span class="_ _8"> </span></span>库<span class="_ _1"></span>多种机器学习<span class="_ _1"></span>算法进行数<span class="_ _1"></span>据分析</div><div class="t m0 x12 h12 y32 ff4 fs4 fc0 sc0 ls0 ws0">的过程,了解<span class="_ _6"> </span><span class="ff1">Python<span class="_ _8"> </span></span>程序的调试方<span class="_ _1"></span>法,运用<span class="_ _8"> </span><span class="ff1">Pyth<span class="_ _1"></span>on<span class="_ _8"> </span></span>编写程序<span class="_ _1"></span>解决实际应用<span class="_ _1"></span>问题。</div><div class="t m0 x12 hf y33 ff5 fs5 fc0 sc1 ls0 ws0">二.实验内容</div><div class="t m0 x12 h9 y34 ff3 fs3 fc0 sc0 ls0 ws0">1.<span class="_ _13"> </span><span class="ff4 sc1">基础实验</span></div><div class="t m0 x14 h12 y35 ff4 fs4 fc0 sc0 ls0 ws0">设计一个带有<span class="_ _1"></span>图形用户界面<span class="_ _1"></span>的人机对战井<span class="_ _1"></span>字棋游戏。</div><div class="t m0 x14 h12 y36 ff4 fs4 fc0 sc0 ls0 ws0">游戏在<span class="_ _1"></span>九宫方<span class="_ _1"></span>格内<span class="_ _1"></span>进行,如<span class="_ _1"></span>果一方<span class="_ _1"></span>抢先于<span class="_ _1"></span>某方向<span class="_ _1"></span>(横、<span class="_ _1"></span>竖、<span class="_ _1"></span>斜)连成<span class="_ _6"> </span><span class="ff1">3<span class="_ _8"> </span></span>子,<span class="_ _1"></span>则获取<span class="_ _1"></span>胜利。<span class="_ _1"></span>游戏</div><div class="t m0 x12 h12 y37 ff4 fs4 fc0 sc0 ls0 ws0">界面,<span class="_ _1"></span>首先询问<span class="_ _1"></span>哪个玩<span class="_ _1"></span>家先<span class="_ _1"></span>走,然<span class="_ _1"></span>后根据玩<span class="_ _1"></span>家落子<span class="_ _1"></span>位置,<span class="_ _1"></span>显示<span class="_ _1"></span>棋盘状态<span class="_ _1"></span>。最终<span class="_ _1"></span>根据游<span class="_ _1"></span>戏规则<span class="_ _1"></span>,评判</div><div class="t m0 x12 h12 y38 ff4 fs4 fc0 sc0 ls0 ws0">哪个玩家获胜<span class="_ _1"></span>。</div><div class="t m0 x12 h9 y39 ff3 fs3 fc0 sc0 ls0 ws0">2.<span class="_ _13"> </span><span class="ff4 sc1">数据分析实验</span></div><div class="t m0 x14 h12 y3a ff8 fs4 fc0 sc0 ls0 ws0"><span class="ff4">分析<span class="_ _8"> </span><span class="ff1">19<span class="_ _1"></span>96-<span class="_ _8"> </span>-2015<span class="_ _8"> </span></span>年人口数据特<span class="_ _1"></span>征间的关系以<span class="_ _1"></span>及各个特征的<span class="_ _1"></span>分布与分散状<span class="_ _1"></span>况</span></div><div class="t m0 x14 h12 y3b ff8 fs4 fc0 sc0 ls0 ws0"><span class="ff4">读取并<span class="_ _1"></span>查看<span class="_ _e"> </span><span class="ff1">P2P<span class="_ _8"> </span></span>网络贷款数<span class="_ _1"></span>据主表的基本<span class="_ _1"></span>信息,<span class="_ _9"></span>使用分组聚合方<span class="_ _1"></span>法进一步分析用户<span class="_ _1"></span>信息更新</span></div><div class="t m0 x12 h12 y3c ff4 fs4 fc0 sc0 ls0 ws0">表和登录信息<span class="_ _1"></span>表</div><div class="t m0 x14 h12 y3d ff8 fs4 fc0 sc0 ls0 ws0"><span class="ff4">插<span class="_ _1"></span>补用<span class="_ _1"></span>户用电<span class="_ _1"></span>量数据<span class="_ _1"></span>缺<span class="_ _1"></span>失值,<span class="_ _1"></span>合并<span class="_ _1"></span>线损、<span class="_ _1"></span>用电<span class="_ _1"></span>量趋<span class="_ _1"></span>势与线<span class="_ _1"></span>路告<span class="_ _1"></span>警数据<span class="_ _1"></span>,标<span class="_ _1"></span>准化<span class="_ _1"></span>建模专<span class="_ _1"></span>家样<span class="_ _1"></span>本</span></div><div class="t m0 x12 h12 y3e ff4 fs4 fc0 sc0 ls0 ws0">数据</div><div class="t m0 x14 h12 y3f ff8 fs4 fc0 sc0 ls0 ws0"><span class="ff4">使用<span class="_ _6"> </span><span class="ff1">sklearn<span class="_ _8"> </span></span>处理<span class="_ _8"> </span><span class="ff1">wine<span class="_ _6"> </span></span>和<span class="_ _8"> </span><span class="ff1">wine_quality<span class="_ _e"> </span></span>数<span class="_ _1"></span>据集,构<span class="_ _1"></span>建基于<span class="_ _8"> </span><span class="ff1">wine<span class="_ _6"> </span></span>数据集的<span class="_ _8"> </span><span class="ff1">K-M<span class="_ _1"></span>eans<span class="_ _8"> </span></span>聚类模<span class="_ _1"></span>型、</span></div><div class="t m0 x12 h12 y40 ff1 fs4 fc0 sc0 ls0 ws0">SVM<span class="_ _8"> </span><span class="ff4">分类<span class="_ _1"></span>模型、回归模型</span></div><div class="t m0 x12 hf y41 ff5 fs5 fc0 sc1 ls0 ws0">三.实验环境<span class="_ _14"> </span><span class="ff3 sc0">Experiment<span class="_ _15"> </span>Environment</span></div><div class="t m0 x14 h12 y42 ff4 fs4 fc0 sc0 ls0 ws0">操作系统:<span class="_ _1"></span><span class="ff1">W<span class="_ _9"></span>indows<span class="_ _8"> </span>10</span></div><div class="t m0 x14 h12 y43 ff4 fs4 fc0 sc0 ls0 ws0">编译软件:<span class="_ _1"></span><span class="ff1">PyCharm<span class="_ _8"> </span>20<span class="_ _1"></span>19.3.1</span></div><div class="t m0 x15 he y44 ff1 fs4 fc0 sc0 ls0 ws0">Anacon<span class="_ _1"></span>da3<span class="_ _8"> </span>2019.10<span class="_ _8"> </span>(Python<span class="_ _8"> </span>3.<span class="_ _1"></span>7.4<span class="_ _8"> </span>64-bit)</div><div class="t m0 x15 he y45 ff1 fs4 fc0 sc0 ls0 ws0">Spyder<span class="_ _8"> </span>3.3.6</div><div class="t m0 x15 he y46 ff1 fs4 fc0 sc0 ls0 ws0">Python<span class="_ _8"> </span>IDLE<span class="_ _6"> </span>3.7</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/13027471/bg4.jpg"><div class="t m0 x11 h11 y29 ff7 fs4 fc0 sc0 ls0 ws0">《<span class="ff1">Python<span class="_ _6"> </span></span>程序设计》实验报告<span class="_ _11"> </span>东北大学软件<span class="_ _1"></span>学院</div><div class="c xd y2a w7 hd"><div class="t m0 x0 he y2b ff1 fs4 fc0 sc0 ls0 ws0">-<span class="_ _8"> </span>4<span class="_ _8"> </span>-</div></div><div class="t m0 x12 hf y47 ff5 fs5 fc0 sc1 ls0 ws0">四.实验过程<span class="_ _1"></span>与分析</div><div class="t m0 x12 h13 y48 ff9 fs1 fc0 sc0 ls0 ws0">4.1<span class="_ _16"> </span><span class="ff5 sc1">基础实验</span></div><div class="t m0 x12 h14 y49 ff3 fs3 fc0 sc0 ls0 ws0">1.</div><div class="t m0 x16 h15 y4a ff5 fs3 fc0 sc1 ls0 ws0">问题描述及分析</div><div class="t m0 x14 h12 y4b ff4 fs4 fc0 sc0 ls0 ws0">设计一<span class="_ _1"></span>个带有<span class="_ _1"></span>图形用户<span class="_ _1"></span>界面<span class="_ _1"></span>的人机<span class="_ _1"></span>对战井<span class="_ _1"></span>字棋游<span class="_ _1"></span>戏。游戏<span class="_ _1"></span>在九<span class="_ _1"></span>宫方格<span class="_ _1"></span>内进行<span class="_ _1"></span>,如果<span class="_ _1"></span>一方抢<span class="_ _1"></span>先于</div><div class="t m0 x12 h12 y4c ff4 fs4 fc0 sc0 ls0 ws0">某方向<span class="_ _1"></span>(横、<span class="_ _1"></span>竖、斜)<span class="_ _1"></span>连成<span class="_ _6"> </span><span class="ff1">3<span class="_ _8"> </span></span>子,则获<span class="_ _1"></span>取胜<span class="_ _1"></span>利。游戏<span class="_ _1"></span>界面,<span class="_ _1"></span>首先询<span class="_ _1"></span>问哪个<span class="_ _1"></span>玩家先走<span class="_ _1"></span>,然<span class="_ _1"></span>后根据<span class="_ _1"></span>玩家</div><div class="t m0 x12 h12 y4d ff4 fs4 fc0 sc0 ls0 ws0">落子位置,显<span class="_ _1"></span>示棋盘状态。<span class="_ _1"></span>最终根据游戏<span class="_ _1"></span>规则,评判哪<span class="_ _1"></span>个玩家获胜。</div><div class="t m0 x14 h12 y4e ff4 fs4 fc0 sc0 ls0 ws0">该问题的重<span class="_ _1"></span>点与难点在于<span class="_ _1"></span>:<span class="_ _17"></span>如何在图形<span class="_ _1"></span>界面中实现下<span class="_ _1"></span>棋功能,<span class="_ _17"></span>如<span class="_ _1"></span>何判断当前棋<span class="_ _1"></span>盘中是否有赢<span class="_ _1"></span>家,</div><div class="t m0 x12 h12 y4f ff4 fs4 fc0 sc0 ls0 ws0">以及电<span class="_ _1"></span>脑如何选<span class="_ _1"></span>择下棋<span class="_ _1"></span>位置<span class="_ _1"></span>。前者<span class="_ _1"></span>可以通过<span class="_ _1"></span>在每一<span class="_ _1"></span>次下棋<span class="_ _1"></span>之后<span class="_ _1"></span>,遍历棋<span class="_ _1"></span>盘中获<span class="_ _1"></span>胜的路<span class="_ _1"></span>线来判<span class="_ _1"></span>断某一</div><div class="t m0 x12 h12 y50 ff4 fs4 fc0 sc0 ls0 ws0">路线中<span class="_ _1"></span>的三个下<span class="_ _1"></span>棋点是<span class="_ _1"></span>否为<span class="_ _1"></span>同一玩<span class="_ _1"></span>家的棋子<span class="_ _1"></span>,若相<span class="_ _1"></span>同,则<span class="_ _1"></span>该玩<span class="_ _1"></span>家获胜,<span class="_ _1"></span>游戏结<span class="_ _1"></span>束;若<span class="_ _1"></span>不存在<span class="_ _1"></span>这样的</div><div class="t m0 x12 h12 y51 ff4 fs4 fc0 sc0 ls0 ws0">情况,<span class="_ _1"></span>则此时没<span class="_ _1"></span>有玩家<span class="_ _1"></span>获胜<span class="_ _1"></span>,游戏<span class="_ _1"></span>继续。后<span class="_ _1"></span>者可以<span class="_ _1"></span>通过一<span class="_ _1"></span>个估<span class="_ _1"></span>价函数,<span class="_ _1"></span>来帮助<span class="_ _1"></span>电脑判<span class="_ _1"></span>断当前<span class="_ _1"></span>的下棋</div><div class="t m0 x12 h12 y52 ff4 fs4 fc0 sc0 ls0 ws0">位置,判断的<span class="_ _1"></span>优先级依次为<span class="_ _1"></span>:赢得游戏、<span class="_ _1"></span>不能输(平局<span class="_ _1"></span>)、随机下棋<span class="_ _1"></span>。</div><div class="t m0 x12 h14 y53 ff3 fs3 fc0 sc0 ls0 ws0">2.</div><div class="t m0 x16 h15 y54 ff5 fs3 fc0 sc1 ls0 ws0">关键算法设计</div><div class="t m0 x14 h12 y55 ff4 fs4 fc0 sc1 ls0 ws0">·关键<span class="_ _1"></span>点<span class="_ _8"> </span>1:在<span class="_ _1"></span>图形界面<span class="_ _1"></span>中实现<span class="_ _1"></span>下棋功能<span class="_ _1"></span>。</div><div class="t m0 x17 h12 y56 ff4 fs4 fc0 sc0 ls0 ws0">代码如下:</div><div class="c x0 y57 w8 h16"><div class="t m0 x12 h17 y58 ffa fs4 fc1 sc0 ls0 ws0">def<span class="_"> </span><span class="fc2">peo_go<span class="_ _1"></span><span class="fc0">(po):</span></span></div><div class="t m0 x14 h12 y59 ffa fs4 fc3 sc0 ls0 ws0">#<span class="_ _e"> </span><span class="ff4">玩家走棋</span></div><div class="t m0 x14 h17 y5a ffa fs4 fc1 sc0 ls0 ws0">if<span class="_"> </span><span class="fc0">the<span class="_ _1"></span>_chess[po]<span class="_ _13"> </span>==<span class="_"> </span>0:</span></div><div class="t m0 x17 h17 y5b ffa fs4 fc0 sc0 ls0 ws0">the_chess[<span class="_ _1"></span>po]<span class="_ _13"> </span>=<span class="_"> </span>who</div><div class="t m0 x17 h17 y5c ffa fs4 fc0 sc0 ls0 ws0">update_che<span class="_ _1"></span>ss()</div><div class="t m0 x17 h17 y5d ffa fs4 fc1 sc0 ls0 ws0">if<span class="_ _18"> </span><span class="fc0">is_win(the<span class="_ _1"></span>_chess,<span class="_ _19"> </span>who)<span class="_ _18"> </span>==<span class="_ _18"> </span>who:</span></div><div class="t m0 x18 h12 y5e ffa fs4 fc0 sc0 ls0 ws0">tips.set(<span class="_ _1"></span><span class="fc4">'<span class="ff4">你赢了!</span>'<span class="_ _1"></span></span>)</div><div class="t m0 x17 h17 y5f ffa fs4 fc1 sc0 ls0 ws0">elif<span class="_"> </span><span class="fc0">c<span class="_ _1"></span>ount_zero(<span class="_ _1"></span>the_chess)<span class="_ _13"> </span>==<span class="_"> </span>0:</span></div><div class="t m0 x18 h12 y60 ffa fs4 fc0 sc0 ls0 ws0">tips.set(<span class="_ _1"></span><span class="fc4">"<span class="ff4">平局!<span class="_ _1"></span></span>"</span>)</div><div class="t m0 x17 h17 y61 ffa fs4 fc1 sc0 ls0 ws0">else<span class="fc0">:</span></div><div class="t m0 x18 h17 y62 ffa fs4 fc0 sc0 ls0 ws0">ai_go(who<span class="_ _13"> </span>*<span class="_"> </span>-1)</div></div><div class="c x19 y57 w9 h16"><div class="t m0 x8 h17 y58 ffa fs4 fc1 sc0 ls0 ws0">def<span class="_"> </span><span class="fc2">ai_go<span class="_ _1"></span><span class="fc0">(w):</span></span></div><div class="t m0 x1a h12 y59 ffa fs4 fc3 sc0 ls0 ws0">#<span class="_ _e"> </span><span class="ff4">机器走棋</span></div><div class="t m0 x1a h17 y5a ffa fs4 fc1 sc0 ls0 ws0">if<span class="_"> </span><span class="fc0">count_zer<span class="_ _1"></span>o(the_ch<span class="_ _1"></span>ess)<span class="_"> </span><<span class="_ _13"> </span>9:</span></div><div class="t m0 x1b h17 y5b ffa fs4 fc0 sc0 ls0 ws0">po<span class="_"> </span>=<span class="_"> </span>is_dang<span class="_ _1"></span>er(the_c<span class="_ _1"></span>hess,<span class="_"> </span>1)</div><div class="t m0 x1b h17 y5c ffa fs4 fc1 sc0 ls0 ws0">if<span class="_"> </span><span class="fc0">po<span class="_"> </span>!=<span class="_ _13"> </span>-1:</span></div><div class="t m0 x1c h17 y5d ffa fs4 fc0 sc0 ls0 ws0">the_chess[p<span class="_ _1"></span>o]<span class="_"> </span>=<span class="_"> </span>w</div><div class="t m0 x1c h17 y63 ffa fs4 fc0 sc0 ls0 ws0">update_ches<span class="_ _1"></span>s()</div><div class="t m0 x1b h17 y5f ffa fs4 fc1 sc0 ls0 ws0">elif<span class="_"> </span>not<span class="_ _13"> </span><span class="fc0">constrain<span class="_ _1"></span>t(w):</span></div><div class="t m0 x1c h17 y64 ffa fs4 fc1 sc0 ls0 ws0">pass</div><div class="t m0 x1b h17 y61 ffa fs4 fc1 sc0 ls0 ws0">else<span class="fc0">:</span></div><div class="t m0 x1c h17 y62 ffa fs4 fc0 sc0 ls0 ws0">the_chess[<span class="_ _1a"> </span>\</div><div class="t m0 x1d h17 y65 ffa fs4 fc0 sc0 ls0 ws0">get_next_o(<span class="_ _1a"> </span>\</div><div class="t m0 x1d h17 y66 ffa fs4 fc0 sc0 ls0 ws0">the_chess,<span class="_ _13"> </span>-1)]<span class="_"> </span>=<span class="_ _13"> </span>w</div><div class="t m0 x1c h17 y67 ffa fs4 fc0 sc0 ls0 ws0">update_ches<span class="_ _1"></span>s()</div><div class="t m0 x1b h17 y68 ffa fs4 fc1 sc0 ls0 ws0">if<span class="_ _1b"> </span><span class="fc0">is_win(the_c<span class="_ _1"></span>hess,<span class="_ _1b"> </span>-1)<span class="_ _1b"> </span>==<span class="_ _1b"> </span>-1:</span></div><div class="t m0 x1c h12 y69 ffa fs4 fc0 sc0 ls0 ws0">tips.set(<span class="_ _1"></span><span class="fc4">"<span class="ff4">你输了!</span>"<span class="_ _1"></span></span>)</div><div class="t m0 x1b h17 y6a ffa fs4 fc1 sc0 ls0 ws0">if<span class="_ _18"> </span><span class="fc0">count_<span class="_ _1"></span>zero(the_<span class="_ _1"></span>chess)<span class="_ _19"> </span>==<span class="_ _18"> </span>0:</span></div><div class="t m0 x1d h12 y6b ffa fs4 fc0 sc0 ls0 ws0">tips.set(<span class="_ _1"></span><span class="fc4">"<span class="ff4">平局!</span>"</span>)</div></div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/13027471/bg5.jpg"><div class="t m0 x11 h11 y29 ff7 fs4 fc0 sc0 ls0 ws0">《<span class="ff1">Python<span class="_ _6"> </span></span>程序设计》实验报告<span class="_ _11"> </span>东北大学软件<span class="_ _1"></span>学院</div><div class="c xd y2a w7 hd"><div class="t m0 x0 he y2b ff1 fs4 fc0 sc0 ls0 ws0">-<span class="_ _8"> </span>5<span class="_ _8"> </span>-</div></div><div class="t m0 x14 h12 y6c ff4 fs4 fc0 sc0 ls0 ws0">代码中省略<span class="_ _1"></span>了按钮事件<span class="_ _1"></span>代码及调用代<span class="_ _1"></span>码的语句,<span class="_ _1c"></span>按钮事件利<span class="_ _1"></span>用<span class="_ _8"> </span><span class="ff1">tkinter<span class="_ _8"> </span></span>中的<span class="_ _8"> </span><span class="ff1">b<span class="_ _1"></span>ind()</span>函数绑<span class="_ _1"></span>定事件,</div><div class="t m0 x12 h12 y6d ff4 fs4 fc0 sc0 ls0 ws0">并联系<span class="_ _1"></span>到<span class="_ _8"> </span><span class="ff1">peo<span class="_ _1"></span>_go<span class="_ _8"> </span></span>函数<span class="_ _1"></span>。在<span class="_ _8"> </span><span class="ff1">peo_<span class="_ _1"></span>go<span class="_ _8"> </span></span>函数中<span class="_ _1"></span>,局部<span class="_ _1"></span>变量<span class="_ _8"> </span><span class="ff1">po<span class="_ _8"> </span></span>表<span class="_ _1"></span>示点击<span class="_ _1"></span>下棋的<span class="_ _1"></span>位置(<span class="_ _1"></span><span class="ff1">0~8</span>)<span class="_ _1"></span>,<span class="ff1">the_che<span class="_ _1"></span>ss<span class="_ _8"> </span></span>表</div><div class="t m0 x12 h12 y6e ff4 fs4 fc0 sc0 ls0 ws0">示当前的棋盘<span class="_ _1"></span>。</div><div class="t m0 x14 h12 y6f ff4 fs4 fc0 sc0 ls0 ws0">这里以玩家<span class="_ _1"></span>先下为例,<span class="_ _9"></span>如果<span class="_ _8"> </span><span class="ff1">po<span class="_ _8"> </span></span>指向的位置为<span class="_ _6"> </span><span class="ff1">0<span class="_ _1c"></span><span class="ff4">(没有下过子<span class="_ _1"></span>)<span class="_ _1c"></span>,<span class="_ _1c"></span>则<span class="_ _1"></span>将该位置的数<span class="_ _1"></span>值改为<span class="_ _8"> </span><span class="ff1">who<span class="_ _6"> </span></span>的</span></span></div><div class="t m0 x12 h12 y70 ff4 fs4 fc0 sc0 ls0 ws0">值,同时通过<span class="_ _6"> </span><span class="ff1">update_chess()</span>函数更<span class="_ _1"></span>新图形界面<span class="_ _1"></span>上的棋盘。此<span class="_ _1"></span>时,如果玩家下棋后<span class="_ _1"></span>达成胜利条<span class="_ _1"></span>件,则</div><div class="t m0 x12 h12 y71 ff4 fs4 fc0 sc0 ls0 ws0">显示“<span class="_ _1"></span>你赢了<span class="_ _1"></span>”,<span class="_ _1"></span>否则如<span class="_ _1"></span>果此时没<span class="_ _1"></span>有可以<span class="_ _1"></span>落子的<span class="_ _1"></span>地方了<span class="_ _1"></span>,就显<span class="_ _1"></span>示“平<span class="_ _1"></span>局”,<span class="_ _1"></span>如果条<span class="_ _1"></span>件都不满<span class="_ _1"></span>足,<span class="_ _1"></span>则</div><div class="t m0 x12 h12 y72 ff4 fs4 fc0 sc0 ls0 ws0">说明游戏还未<span class="_ _1"></span>结束,切换至<span class="_ _1"></span>电脑操作(在<span class="_ _1"></span>玩家操作过程<span class="_ _1"></span>中不可能出现<span class="_ _1"></span>落子后玩家输的情<span class="_ _1"></span>况)。</div><div class="t m0 x14 h12 y73 ff4 fs4 fc0 sc0 ls0 ws0">机器<span class="_ _1"></span>走棋<span class="_ _1"></span>部分<span class="_ _1"></span>中,<span class="_ _1"></span>首先<span class="_ _1"></span>判<span class="_ _1"></span>断当<span class="_ _1"></span>前剩<span class="_ _1"></span>余空<span class="_ _1"></span>格<span class="_ _1"></span>是否<span class="_ _1"></span>小于<span class="_ _6"> </span><span class="ff1">9</span>,如<span class="_ _1"></span>果是<span class="_ _1"></span>,<span class="_ _1"></span>那么<span class="_ _1"></span>判断<span class="_ _1"></span>拟<span class="_ _1"></span>下棋<span class="_ _1"></span>点下<span class="_ _1"></span>完后<span class="_ _1"></span>是否</div><div class="t m0 x12 h12 y74 ff4 fs4 fc0 sc0 ls0 ws0">会让自己<span class="_ _1"></span>陷入危<span class="_ _1"></span>险状态<span class="ff1">(is_<span class="_ _1"></span>danger()<span class="_ _1"></span></span>函数的功<span class="_ _1"></span>能<span class="ff1">)</span>,<span class="_ _1"></span>如果陷入<span class="_ _1"></span><span class="ff1">(po<span class="_ _8"> </span>!=<span class="_ _8"> </span>-1)<span class="_ _1"></span></span>,那么就<span class="_ _1"></span>落子在<span class="_ _1"></span>该位置来<span class="_ _1"></span>化解危</div><div class="t m0 x12 h12 y75 ff4 fs4 fc0 sc0 ls0 ws0">机,<span class="_ _1d"></span>否则,<span class="_ _1d"></span>根据<span class="_ _8"> </span><span class="ff1">e<span class="_ _1"></span>valuation<span class="_ _8"> </span></span>函数<span class="_ _1d"></span>(具<span class="_ _1"></span>体功能在关键<span class="_ _1"></span>点<span class="_ _8"> </span><span class="ff1">3<span class="_ _8"> </span></span>中<span class="_ _1"></span>介绍)<span class="_ _1d"></span>的优先级判<span class="_ _1"></span>断来落子,<span class="_ _1d"></span>同<span class="_ _1"></span>时更新棋盘。</div><div class="t m0 x12 h12 y76 ff4 fs4 fc0 sc0 ls0 ws0">落子<span class="_ _1"></span>后,<span class="_ _1"></span>判断<span class="_ _1"></span>此时电<span class="_ _1"></span>脑(<span class="_ _1"></span><span class="ff1">-1</span>)<span class="_ _1"></span>是否<span class="_ _1"></span>达到<span class="_ _1"></span>获胜<span class="_ _1"></span>条件,<span class="_ _1"></span>如果<span class="_ _1"></span>达<span class="_ _1"></span>到,那<span class="_ _1"></span>么玩<span class="_ _1"></span>家输了<span class="_ _1"></span>,<span class="_ _1"></span>显示<span class="_ _1"></span>提示信<span class="_ _1"></span>息;<span class="_ _1"></span>如果</div><div class="t m0 x12 h12 y77 ff4 fs4 fc0 sc0 ls0 ws0">此时没<span class="_ _1"></span>有空格可<span class="_ _1"></span>以下子<span class="_ _1"></span>,则<span class="_ _1"></span>游戏以<span class="_ _1"></span>平局结束<span class="_ _1"></span>(在电<span class="_ _1"></span>脑操作<span class="_ _1"></span>的过<span class="_ _1"></span>程中不可<span class="_ _1"></span>能出现<span class="_ _1"></span>落子后<span class="_ _1"></span>玩家获<span class="_ _1"></span>胜的情</div><div class="t m0 x12 h12 y78 ff4 fs4 fc0 sc0 ls0 ws0">况)。</div><div class="t m0 x14 h12 y79 ff4 fs4 fc0 sc0 ls0 ws0">·<span class="sc1">关键<span class="_ _1"></span>点<span class="_ _8"> </span>2:判<span class="_ _1"></span>断当前棋<span class="_ _1"></span>盘中是<span class="_ _1"></span>否有赢家<span class="_ _1"></span>。</span></div><div class="t m0 x17 h12 y7a ff4 fs4 fc0 sc0 ls0 ws0">代码如下:</div><div class="t m0 x17 h17 y7b ffa fs4 fc1 sc0 ls0 ws0">def<span class="_"> </span><span class="fc2">is_win<span class="_ _1"></span><span class="fc0">(now_chess<span class="_ _1"></span>,<span class="_"> </span>w<span class="_ _1"></span>ho):</span></span></div><div class="t m0 x18 h17 y7c ffa fs4 fc0 sc0 ls0 ws0">temp<span class="_"> </span>=<span class="_ _13"> </span>now_chess[<span class="_ _1"></span>:]</div><div class="t m0 x18 h17 y7d ffa fs4 fc1 sc0 ls0 ws0">f<span class="fc5">or<span class="_"> </span><span class="fc0">chess<span class="_ _13"> </span></span></span>in<span class="_"> </span><span class="fc0">win_c<span class="_ _1"></span>hess:</span></div><div class="t m0 x1e h17 y7e ffa fs4 fc1 sc0 ls0 ws0">if<span class="_"> </span><span class="fc0">(te<span class="_ _1"></span>mp[chess[0]<span class="_ _1"></span>]<span class="_"> </span>==<span class="_"> </span>w<span class="_ _1"></span>ho)<span class="_"> </span></span>and<span class="_ _13"> </span><span class="fc0">\</span></div><div class="t m0 x1f h17 y7f ffa fs4 fc0 sc0 ls0 ws0">(temp[ches<span class="_ _1"></span>s[1]]<span class="_ _13"> </span>==<span class="_"> </span>who)<span class="_ _13"> </span><span class="fc1">and<span class="_"> </span></span>\</div><div class="t m0 x1f h17 y80 ffa fs4 fc0 sc0 ls0 ws0">(temp[ches<span class="_ _1"></span>s[2]]<span class="_ _13"> </span>==<span class="_"> </span>who):</div><div class="t m0 x1f h17 y81 ffa fs4 fc1 sc0 ls0 ws0">return<span class="_ _13"> </span><span class="fc0">who</span></div><div class="t m0 x18 h17 y82 ffa fs4 fc1 sc0 ls0 ws0">return<span class="_ _13"> </span><span class="fc0">0</span></div><div class="t m0 x14 h12 y83 ff4 fs4 fc0 sc0 ls0 ws0">代码中<span class="_ _8"> </span><span class="ff1">n<span class="_ _1"></span>ow_chess<span class="_ _8"> </span></span>为<span class="_ _1"></span>当前棋盘的情况<span class="_ _1c"></span>(<span class="ff1">3*3<span class="_ _8"> </span></span>二维数<span class="_ _1"></span>组)<span class="_ _12"></span>,<span class="_ _12"></span><span class="ff1">who<span class="_ _6"> </span><span class="ff4">代表要判断的游<span class="_ _1"></span>戏方<span class="_ _12"></span>(在<span class="_ _1"></span>程序中以</span></span></div><div class="t m0 x12 h12 y84 ff4 fs4 fc0 sc0 ls0 ws0">整数<span class="_ _8"> </span><span class="ff1">1<span class="_ _8"> </span></span>代<span class="_ _1"></span>表此位置为人<span class="_ _1"></span>类玩家下棋<span class="_ _1"></span>位置,<span class="_ _9"></span><span class="ff1">-1<span class="_ _8"> </span><span class="ff4">代表机器下<span class="_ _1"></span>棋位置,每次交换下棋方后对<span class="_ _6"> </span></span>who<span class="_ _8"> </span><span class="ff4">取反,即</span></span></div><div class="t m0 x12 h12 y85 ff4 fs4 fc0 sc0 ls0 ws0">可达到交换<span class="_ _1"></span>玩家的目的<span class="_ _1"></span>)<span class="_ _1e"></span>。<span class="_ _1e"></span>如果在<span class="_ _6"> </span><span class="ff1">for<span class="_ _8"> </span></span>循环中没有<span class="_ _1"></span>执行到<span class="_ _8"> </span><span class="ff1">return<span class="_ _8"> </span></span>语<span class="_ _1"></span>句,<span class="_ _1e"></span>则说明<span class="_ _1"></span>此时场上没有<span class="_ _1"></span>一方获胜,</div><div class="t m0 x12 h12 y86 ff4 fs4 fc0 sc0 ls0 ws0">否则,返回要<span class="_ _1"></span>判断的游戏方<span class="_ _1"></span>代表数字,即<span class="_ _1"></span>该方获胜。</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>