




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、综合练习一、要求:1、本综合练习为选作,但建议完成;2、完成时间: 2017年11月 28日之前;3、如果完成,可在总评成绩中体现。1、2、结合个人实际工作内容,应用 Python 语言编程计算。设计完成一个单词游戏:HANGMAN请按题目指导逐步完成。这是一个经典单词游戏Hangma啲变形设计。如果你对游戏规则 不熟悉,可以点击链接()。此处第二玩家始终是计算机,它会随机 选择一个单词(即下文经常用到的 secretWord )在这个问题中,你将实现函数 han gma n(最后需要完成的函数),程序将在玩家与计算机之间交互运行。在完成这个函数的设计之前, 需要先创建几个辅助函数。首先下载两
2、个文件 和,存放在同一个目录中。打开并运行文 件,不要做任何修改,以保证正确运行。题目所给的代码从文本文件中装载单词列表, 如果运行正常应该 可以看到:Loading word list from file.55909 words loaded.如果出现错误,需要将语句:WORDLIST_FILENAME = ""修改为类似如下形式(取决于存在哪个目录中)WORDLIST_FILENAME = "C:UsersZhangjl"文件 已经实现了几个函数, 可以直接用于问题的解决, 你可以忽略代码中的注释, 不过还是建议读一下。可以将自己的代码都写在这个文件
3、里。游戏要求 :1、计算机从单词表中随机地选取一个单词,实现这一点的代码已经提供在文件中。2、游戏是交互式的,游戏的流程如下:? 刚开始时,让用户知道单词的长度(即secretWord 的长度)? 每一轮让用户猜一次(一个字母)? 用户能得到立即反馈,所猜字母是否是secret 单词的字母? 每一轮,需要显示已经猜中的部分,以及用户没有猜过的字母3. 游戏的额外规则:? 用户可以猜 8 次 . 每一轮猜测后提醒他剩余多少次可猜。假设用户总是每次输入一个字母 (A-Z) 。? 当用户错误猜测时,猜测次数减少 1 次。?如果用户重复猜了已经猜过的字母,猜测次数不减,提醒他这个字母已经猜过了,并继续
4、猜测。?如果用户猜过的字母拼出了那个单词,游戏结束。如果用户用完猜测次数(未猜中单词),游戏结束并揭示秘密单词。样例(注:有两类,仔细看哦,对写代码有好处)赢了游戏应如下显示:Loadi ng word list from file.55900 words loaded.Welcome to the game, Han gma n!I am thinking of a word that is 4 letters long.You have 8 guesses left.Available letters: abcdefghijkl mnopq rstuvwxyzPI ease guess a
5、 letter: aGood guess: _ aYou have 8 guesses left.Available letters: bcdefghijkl mnopq rstuvwxyzPI ease guess a letter: aOops! You've already guessed that letter: _ aYou have 8 guesses left.Available letters: bcdefghijkl mnopq rstuvwxyzPI ease guess a letter: sOops! That letter is not in my word:
6、 _ aYou have 7 guesses left.Available letters: bcdefghijkl mnopq rtuvwxyz PI ease guess a letter: tGood guess: ta_ tYou have 7 guesses left.Available letters: bcdefghijkl mnopq ruvwxyz PI ease guess a letter: rOops! That letter is not in my word: ta_ tYou have 6 guesses left.Available letters: bcdef
7、ghijkl mnopqu vwxyz PI ease guess a letter: mOops! That letter is not in my word: ta_ tYou have 5 guesses left.Available letters: bcdefghijk Inopqu vwxyz PI ease guess a letter: cGood guess: tactCon gratulati ons, you won!输了游戏如下显示:Loadi ng word list from file.55900 words loaded.Welcome to the game H
8、an gma n!I am thinking of a word that is 4 letters longYou have 8 guesses leftAvailable Letters: abcdefghijkl mnopq rstuvwxyzPI ease guess a letter: aOops! That letter is not in my wordYou have 7 guesses leftAvailable Letters: bcdefghijkl mnopq rstuvwxyzPI ease guess a letter: bOops! That letter is
9、not in my wordYou have 6 guesses leftAvailable Letters: cdefghijkl mnopq rstuvwxyzPI ease guess a letter: cOops! That letter is not in my wordYou have 5 guesses leftAvailable Letters: defghijkl mnopq rstuvwxyzPI ease guess a letter: dOops! That letter is not in my wordYou have 4 guesses leftAvailabl
10、e Letters: efghijklm nop qrstuvwxyzPI ease guess a letter: eGood guess: eeYou have 4 guesses leftAvailable Letters: fghijkl mnopq rstuvwxyzPI ease guess a letter: fOops! That letter is not in my word eeYou have 3 guesses leftAvailable Letters: ghijkl mnopq rstuvwxyzPI ease guess a letter: gOops! Tha
11、t letter is not in my word eeYou have 2 guesses leftAvailable Letters: hijkl mnopq rstuvwxyzPI ease guess a letter: hOops! That letter is not in my word eeYou have 1 guesses leftAvailable Letters: ijkl mnopq rstuvwxyzPI ease guess a letter: iOops! That letter is not in my word eeSorry, you ran out o
12、f guesses. The word was else.需要完成下列三个辅助函数:它有21、函数 isWordGuessed(secretWord, lettersGuessed)个参数:一个字符串 secretWord,一个字符列表secretWord 已经被lettersGuessed)返lettersGuessed。函数返回逻辑值,如果猜中(ie, secretWord中的所有字母都在回True,否则返回False 。假设secretWord与lettersGuessed都是小写字母。例如:>>> secretWord = 'apple'>>
13、;> lettersGuessed = 'e', 'i', 'k', ' p', 'r', 's'>>> print (isWordGuessed(secretWord, lettersGuessed) False2、函数 getGuessedWord(secretWord, lettersGuessed),它有 2个输入参数:一个字符串secretWord , 一个字母列表lettersGuessed。函数返回一个字符串,该返回串由字母与下划线组成,内容取决于letters
14、Guessed 中的字母是否是secretWord的字母.这个函数不应该与前面编写的代码 isWordGuessed 相差太大。当在字符串中加入下划线时,要在后面加至少一个空格,这样用户看还有多少个字母未猜中会更清楚(比较一下形式与)。假设secretWord 和lettersGuessed 都是小写字母。例如:>>> secretWord = 'apple'>>> lettersGuessed = 'e', 'i', 'k', ' p', 'r', 's
15、'>>> print getGuessedWord(secretWord, lettersGuessed) '_ PP_ e'3、函数 getAvailableLetters (lettersGuessed),它接受一个输入参数:一个字母列表lettersGuessed。函数返回所有没有被 猜测过(即不在lettersGuessed中)的小写字母按字母顺序组 成的字符串。假设lettersGuessed 中的字母都是小写的。例如:lettersGuessed = 'e', 'i', 'k', '
16、p', 'r', 's'>>> print getAvailableLetters(lettersGuessed)AbcdfghjI mno qtuvwxyz最后要完成的函数hanmanhangman(secretWord),它有一个输入参数:用户需要去猜测的单词secretWord (后续程序用到的变量名)。由它开始游戏程序Han gmar用户与计算机的交互过程。确保你用到之前部分设计完成的辅助函数 isWordGuessec、etGuessedWord和 getAvailableLetters 。使用函数lower()来将用户的输入
17、转换为小写。有4个重要的信息需要保存:secretWord :猜测的目标单词I ettersGuessed:追踪用户猜测过的字母mstakesMade :记录用户猜测错误的次数availableLetters:还可以用来被猜测的字母,用户猜测过的字母需要从availableLetters 移除,用户重复猜了的字母,你需要告知用户你已经猜过这个字母。The endimport ran dom import stri ngWORDLIST_FILENAME = "" def loadWords():print ("Loading word list from file
18、.")# inFile: file inFile = open(WORDLIST_FILENAME, 'r', -1)# line: string line = ()# wordlist: list of strings wordlist = () print (" ", len(wordlist), "words loaded.") return wordlistdef chooseWord(wordlist):return (wordlist)def isWordGuessed(secretWord, lettersGues
19、sed):for c in set(secretWord):if not c in lettersGuessed:return Falseelse:return Truess=""def getGuessedWord(secretWord, lettersGuessed):for s in set(lettersGuessed):if s in secretWord:ss=ss+sreturn ss def getAvailableLetters(lettersGuessed):s="abcdefghijklmnopqrstuvwxyz"for c in
20、 lettersGuessed:s=(c,'')return s def hangman(secretWord):print(" Welcome to the game, Hangman!")print("I am thinking of a word that is %d letterslong."%len(secretWord)lettersGuessed=''AvailableLetters=getAvailableLetters(lettersGuessed)GuessedWord=getGuessedWord(s
21、ecretWord, lettersGuessed)tmp_str=""tmp_str=tmp_str+"_ "for i in range(0,len(secretWord):left=8while left>0:print("")print("You have ",left, "guesses left.")print("Available letters:",AvailableLetters)print("Please guess a letter:",end='')while 1:c=input()if ('a'<=c<='z' or 'A'<=c<='Z')and len(c)=1:c=()breakprint(" Wrong input!Please guess a letter:")if c in lettersGuessed:print("Oops! You
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权基础培训内容课件
- 2025年食品安全管理员培训考试试题及答案
- 钢铁板材基础知识培训课件
- 知识产权培训文章课件
- 知识产权培训感受总结课件
- 2025年宠物训练技术初级考试题库及答案
- 知识产权培训安徽站课件
- 潮州食品安全知识培训课件
- 钢筋翻样基础知识培训课件
- 知识产权培训业务课件
- 反诈知识竞赛题库及答案(共286题)
- 2024年新农村雨污分流建设合同
- 副立井罐笼更换提升机钢丝绳专项安全风险辨识评估标准
- 数据安全管理员职业技能竞赛考试题库(含答案)
- 院科两级对核心制度执行率的持续改进案例-儿科I病区运用PDCA循环持续改进三级医师查房制度
- 新概念一册Lesson1-12-测试题(附答案)
- DB64-T 1972-2024 风积沙路基填筑(干压法)施工技术规范
- 质量信得过班组申报材料
- TSG+23-2021气瓶安全技术规程
- 酒店代运营合同范本
- 基于SCALANCE W774W734无线通信网络构建与运行(无线通信模块) (1)讲解
评论
0/150
提交评论