python综合练习(附代码)_

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

综合练习一、要求:1、本综合练习为选作,但建议完成;2、完成时间:2017年11月28日之前;3、如果完成,可在总评成绩中体现。二、题目(任选一个)1、结合个人实际工作内容,应用Python语言编程计算。2、设计完成一个单词游戏:HANGMAN。请按题目指导逐步完成。这是一个经典单词游戏Hangman的变形设计。如果你对游戏规则不熟悉,可以点击链接((game))。此处第二玩家始终是计算机,它会随机选择一个单词(即下文经常用到的secretWord)在这个问题中,你将实现函数hangman(最后需要完成的函数),程序将在玩家与计算机之间交互运行。在完成这个函数的设计之前,需要先创建几个辅助函数。首先下载两个文件ps3_hangman.py和words.txt,存放在同一个目录中。打开并运行文件ps3_hangman.py,不要做任何修改,以保证正确运行。题目所给的代码从文本文件wors.txt中装载单词列表,如果运行正常应该可以看到:Loadingwordlistfromfile...55909wordsloaded.如果出现错误,需要将语句:WORDLIST_FILENAME=words.txt修改为类似如下形式(取决于words.txt存在哪个目录中):WORDLIST_FILENAME=C:\Users\Zhangjl\words.txt文件ps3_hangman.py已经实现了几个函数,可以直接用于问题的解决,你可以忽略代码中的注释,不过还是建议读一下。可以将自己的代码都写在这个文件里。游戏要求:1、计算机从单词表中随机地选取一个单词,实现这一点的代码已经提供在文件中。2、游戏是交互式的,游戏的流程如下:•刚开始时,让用户知道单词的长度(即secretWord的长度)•每一轮让用户猜一次(一个字母)•用户能得到立即反馈,所猜字母是否是secret单词的字母•每一轮,需要显示已经猜中的部分,以及用户没有猜过的字母3.游戏的额外规则:•用户可以猜8次.每一轮猜测后提醒他剩余多少次可猜。假设用户总是每次输入一个字母(A-Z)。•当用户错误猜测时,猜测次数减少1次。•如果用户重复猜了已经猜过的字母,猜测次数不减,提醒他这个字母已经猜过了,并继续猜测。•如果用户猜过的字母拼出了那个单词,游戏结束。如果用户用完猜测次数(未猜中单词),游戏结束并揭示秘密单词。样例(注:有两类,仔细看哦,对写代码有好处)赢了游戏应如下显示:Loadingwordlistfromfile...55900wordsloaded.Welcometothegame,Hangman!Iamthinkingofawordthatis4letterslong.-------------Youhave8guessesleft.Availableletters:abcdefghijklmnopqrstuvwxyzPleaseguessaletter:aGoodguess:_a__------------Youhave8guessesleft.Availableletters:bcdefghijklmnopqrstuvwxyzPleaseguessaletter:aOops!You'vealreadyguessedthatletter:_a__------------Youhave8guessesleft.Availableletters:bcdefghijklmnopqrstuvwxyzPleaseguessaletter:sOops!Thatletterisnotinmyword:_a__------------Youhave7guessesleft.Availableletters:bcdefghijklmnopqrtuvwxyzPleaseguessaletter:tGoodguess:ta_t------------Youhave7guessesleft.Availableletters:bcdefghijklmnopqruvwxyzPleaseguessaletter:rOops!Thatletterisnotinmyword:ta_t------------Youhave6guessesleft.Availableletters:bcdefghijklmnopquvwxyzPleaseguessaletter:mOops!Thatletterisnotinmyword:ta_t------------Youhave5guessesleft.Availableletters:bcdefghijklnopquvwxyzPleaseguessaletter:cGoodguess:tact------------Congratulations,youwon!输了游戏如下显示:Loadingwordlistfromfile...55900wordsloaded.WelcometothegameHangman!Iamthinkingofawordthatis4letterslong-----------Youhave8guessesleftAvailableLetters:abcdefghijklmnopqrstuvwxyzPleaseguessaletter:aOops!Thatletterisnotinmyword____-----------Youhave7guessesleftAvailableLetters:bcdefghijklmnopqrstuvwxyzPleaseguessaletter:bOops!Thatletterisnotinmyword____-----------Youhave6guessesleftAvailableLetters:cdefghijklmnopqrstuvwxyzPleaseguessaletter:cOops!Thatletterisnotinmyword____-----------Youhave5guessesleftAvailableLetters:defghijklmnopqrstuvwxyzPleaseguessaletter:dOops!Thatletterisnotinmyword____-----------Youhave4guessesleftAvailableLetters:efghijklmnopqrstuvwxyzPleaseguessaletter:eGoodguess:e__e-----------Youhave4guessesleftAvailableLetters:fghijklmnopqrstuvwxyzPleaseguessaletter:fOops!Thatletterisnotinmyworde__e-----------Youhave3guessesleftAvailableLetters:ghijklmnopqrstuvwxyzPleaseguessaletter:gOops!Thatletterisnotinmyworde__e-----------Youhave2guessesleftAvailableLetters:hijklmnopqrstuvwxyzPleaseguessaletter:hOops!Thatletterisnotinmyworde__e-----------Youhave1guessesleftAvailableLetters:ijklmnopqrstuvwxyzPleaseguessaletter:iOops!Thatletterisnotinmyworde__e-----------Sorry,youranoutofguesses.Thewordwaselse.需要完成下列三个辅助函数:1、函数isWordGuessed(secretWord,lettersGuessed),它有2个参数:一个字符串secretWord,一个字符列表lettersGuessed。函数返回逻辑值,如果secretWord已经被猜中(ie,secretWord中的所有字母都在lettersGuessed)返回True,否则返回False。假设secretWord与lettersGuessed都是小写字母。例如:secretWord='apple'lettersGuessed=['e','i','k','p','r','s']print(isWordGuessed(secretWord,lettersGuessed))False2、函数getGuessedWord(secretWord,lettersGuessed),它有2个输入参数:一个字符串secretWord,一个字母列表lettersGuessed。函数返回一个字符串,该返回串由字母与下划线组成,内容取决于lettersGuessed中的字母是否是secretWord的字母.这个函数不应该与前面编写的代码isWordGuessed相差太大。当在字符串中加入下划线时,要在后面加至少一个空格,这样用户看还有多少个字母未猜中会更清楚(比较一下形式__与____)。假设secretWord和lettersGuessed都是小写字母。例如:secretWord='apple'lettersGuessed=['e','i','k','p','r','s']printgetGuessedWord(secretWord,lettersGuessed)'_pp_e'3、函数getAvailableLetters(lettersGuessed),它接受一个输入参数:一个字母列表lettersGuessed。函数返回所有没有被猜测过(即不在lettersGuessed中)的小写字母按字母顺序组成的字符串。假设lettersGuessed中的字母都是小写的。例如:lettersGuessed=['e','i','k','p','r','s']printgetAvailableLetters(lettersGuessed)Abcdfghjlmnoqtuvwxyz最后要完成的函数hanman:hangman(secretWord),它有一个输入参数:用户需要去猜测的单词secretWord(后续程序用到的变量名)。由它开始游戏程序Hangman用户与计算机的交互过程。确保你用到之前部分设计完成的辅助函数isWordGuessed、etGuessedWord和getAvailableLetters。使用函数lower()来将用户的输入转换为小写。有4个重要的信息需要保存:(1)secretWord:猜测的目标单词(2)lettersGuessed:追踪用户猜测过的字母(3)mistakesMade:记录用户猜测错误的次数(4)availableLetters:还可以用来被猜测的字母,用户猜测过的字母需要从availableLetters移除,用户重复猜了的字母,你需要告知用户你已经猜过这个字母。TheendimportrandomimportstringWORDLIST_FILENAME=words.txtdefloadWords():print(Loadingwordlistfromfile...)#inFile:fileinFile=open(WORDLIST_FILENAME,'r',-1)#line:stringline=inFile.readline()#wordlist:listofstringswordlist=line.split()print(,len(wordlist),wordsloaded.)returnwordlistdefchooseWord(wordlist):returnrandom.choice(wordlist)defisWordGuessed(secretWord,let

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功