python综合练习(附代码)_.doc_第1页
python综合练习(附代码)_.doc_第2页
python综合练习(附代码)_.doc_第3页
python综合练习(附代码)_.doc_第4页
python综合练习(附代码)_.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合练习一、要求:1、 本综合练习为选作,但建议完成;2、 完成时间:2017年11月28日之前;3、 如果完成,可在总评成绩中体现。二、 题目(任选一个)1、 结合个人实际工作内容,应用Python语言编程计算。2、 设计完成一个单词游戏: HANGMAN。请按题目指导逐步完成。这是一个经典单词游戏Hangman的变形设计。如果你对游戏规则不熟悉,可以点击链接(/wiki/Hangman_(game))。此处第二玩家始终是计算机,它会随机选择一个单词(即下文经常用到的secretWord)在这个问题中,你将实现函数hangman(最后需要完成的函数),程序将在玩家与计算机之间交互运行。在完成这个函数的设计之前,需要先创建几个辅助函数。首先下载两个文件ps3_hangman.py 和 words.txt,存放在同一个目录中。打开并运行文件ps3_hangman.py ,不要做任何修改, 以保证正确运行。题目所给的代码从文本文件wors.txt中装载单词列表,如果运行正常应该可以看到:Loading word list from file.55909 words loaded.如果出现错误,需要将语句:WORDLIST_FILENAME = words.txt 修改为类似如下形式(取决于words.txt存在哪个目录中):WORDLIST_FILENAME = C:UsersZhangjlwords.txt文件 ps3_hangman.py 已经实现了几个函数,可以直接用于问题的解决,你可以忽略代码中的注释,不过还是建议读一下。可以将自己的代码都写在这个文件里。 游戏要求:1、计算机从单词表中随机地选取一个单词,实现这一点的代码已经提供在文件中。2、游戏是交互式的,游戏的流程如下: 刚开始时,让用户知道单词的长度(即secretWord的长度) 每一轮让用户猜一次(一个字母) 用户能得到立即反馈,所猜字母是否是secret单词的字母 每一轮,需要显示已经猜中的部分,以及用户没有猜过的字母3. 游戏的额外规则: 用户可以猜8次. 每一轮猜测后提醒他剩余多少次可猜。假设用户总是每次输入一个字母 (A-Z)。 当用户错误猜测时,猜测次数减少1次。 如果用户重复猜了已经猜过的字母,猜测次数不减,提醒他这个字母已经猜过了,并继续猜测。 如果用户猜过的字母拼出了那个单词,游戏结束。如果用户用完猜测次数(未猜中单词),游戏结束并揭示秘密单词。样例(注:有两类,仔细看哦,对写代码有好处)赢了游戏应如下显示:Loading word list from file.55900 words loaded.Welcome to the game, Hangman!I am thinking of a word that is 4 letters long.-You have 8 guesses left.Available letters: abcdefghijklmnopqrstuvwxyzPlease guess a letter: aGood guess: _ a_ _-You have 8 guesses left.Available letters: bcdefghijklmnopqrstuvwxyzPlease guess a letter: aOops! Youve already guessed that letter: _ a_ _-You have 8 guesses left.Available letters: bcdefghijklmnopqrstuvwxyzPlease guess a letter: sOops! That letter is not in my word: _ a_ _-You have 7 guesses left.Available letters: bcdefghijklmnopqrtuvwxyzPlease guess a letter: tGood guess: ta_ t-You have 7 guesses left.Available letters: bcdefghijklmnopqruvwxyzPlease guess a letter: rOops! That letter is not in my word: ta_ t-You have 6 guesses left.Available letters: bcdefghijklmnopquvwxyzPlease guess a letter: mOops! That letter is not in my word: ta_ t-You have 5 guesses left.Available letters: bcdefghijklnopquvwxyzPlease guess a letter: cGood guess: tact-Congratulations, you won!输了游戏如下显示:Loading word list from file.55900 words loaded.Welcome to the game Hangman!I am thinking of a word that is 4 letters long-You have 8 guesses leftAvailable Letters: abcdefghijklmnopqrstuvwxyzPlease guess a letter: aOops! That letter is not in my word _ _ _ _-You have 7 guesses leftAvailable Letters: bcdefghijklmnopqrstuvwxyzPlease guess a letter: bOops! That letter is not in my word _ _ _ _-You have 6 guesses leftAvailable Letters: cdefghijklmnopqrstuvwxyzPlease guess a letter: cOops! That letter is not in my word _ _ _ _-You have 5 guesses leftAvailable Letters: defghijklmnopqrstuvwxyzPlease guess a letter: dOops! That letter is not in my word _ _ _ _-You have 4 guesses leftAvailable Letters: efghijklmnopqrstuvwxyzPlease guess a letter: eGood guess: e_ _ e-You have 4 guesses leftAvailable Letters: fghijklmnopqrstuvwxyzPlease guess a letter: fOops! That letter is not in my word e_ _ e-You have 3 guesses leftAvailable Letters: ghijklmnopqrstuvwxyzPlease guess a letter: gOops! That letter is not in my word e_ _ e-You have 2 guesses leftAvailable Letters: hijklmnopqrstuvwxyzPlease guess a letter: hOops! That letter is not in my word e_ _ e-You have 1 guesses leftAvailable Letters: ijklmnopqrstuvwxyzPlease guess a letter: iOops! That letter is not in my word e_ _ e-Sorry, you ran out of guesses. The word was else. 需要完成下列三个辅助函数: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 print getGuessedWord(secretWord, lettersGuessed)_ pp_ e3、 函数getAvailableLetters (lettersGuessed),它接受一个输入参数:一个字母列表lettersGuessed。函数返回所有没有被猜测过(即不在lettersGuessed中)的小写字母按字母顺序组成的字符串。假设lettersGuessed中的字母都是小写的。例如:lettersGuessed = e, i, k, p, r, s print getAvailableLetters(lettersGuessed)Abcdfghjlmnoqtuvwxyz最后要完成的函数hanman:hangman(secretWord),它有一个输入参数:用户需要去猜测的单词 secretWord(后续程序用到的变量名)。由它开始游戏程序Hangman用户与计算机的交互过程。确保你用到之前部分设计完成的辅助函数isWordGuessed、etGuessedWord和 getAvailableLetters。使用函数 lower() 来将用户的输入转换为小写。有4个重要的信息需要保存:(1) secretWord:猜测的目标单词(2) lettersGuessed:追踪用户猜测过的字母(3) mistakesMade:记录用户猜测错误的次数(4) availableLetters:还可以用来被猜测的字母,用户猜测过的字母需要从availableLetters移除,用户重复猜了的字母,你需要告知用户你已经猜过这个字母。The endimport random import string WORDLIST_FILENAME = words.txt def loadWords(): print (Loading word list from file.)# inFile: file inFile = open(WORDLIST_FILENAME, r, -1)# line: string line = inFile.readline()# wordlist: list of strings wordlist = line.split() print ( , len(wordlist), words loaded.) return wordlist def chooseWord(wordlist): return random.choice(wordlist) def isWordGuessed(secretWord, lettersGuessed): for c in set(secretWord): if not c in lettersGuessed: return False else: return True def getGuessedWord(secretWord, lettersGuessed): ss= for s in set(lettersGuessed): if s in secretWord: ss=ss+s return ss def getAvailableLetters(lettersGuessed): s=abcdefghijklmnopqrstuvwxyz for c in lettersGuessed: s=s.replace(c,) return s def hangman(secretWord): print( Welcome to the game, Hangman!) print( I am thinking of a word that is %d letters long.%len(secretWord) lettersGuessed= AvailableLetters=getAvailableLetters(lettersGuessed) GuessedWord=getGuessedWord(secretWord, lettersGuessed) tmp_str= for i in range(0,len(secretWord): tmp_str=tmp_str+_ left=8 while left0: 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=c.lower() break print( Wrong input!Please guess a letter:) if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论