python综合练习.docx
- 文档编号:9168983
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:13
- 大小:141.27KB
python综合练习.docx
《python综合练习.docx》由会员分享,可在线阅读,更多相关《python综合练习.docx(13页珍藏版)》请在冰豆网上搜索。
python综合练习
综合练习
一、要求:
1、本综合练习为选作,但建议完成;
2、完成时间:
2017年11月28日之前;
3、如果完成,可在总评成绩中体现。
二、题目(任选一个)
1、结合个人实际工作内容,应用Python语言编程计算。
2、设计完成一个单词游戏:
HANGMAN。
请按题目指导逐步完成。
这是一个经典单词游戏Hangman的变形设计。
如果你对游戏规则不熟悉,可以点击链接()。
此处第二玩家始终是计算机,它会随机选择一个单词(即下文经常用到的secretWord)
在这个问题中,你将实现函数hangman(最后需要完成的函数),程序将在玩家与计算机之间交互运行。
在完成这个函数的设计之前,需要先创建几个辅助函数。
首先下载两个文件和,存放在同一个目录中。
打开并运行文件,不要做任何修改,以保证正确运行。
题目所给的代码从文本文件中装载单词列表,如果运行正常应该可以看到:
Loadingwordlistfromfile...
55909wordsloaded.
如果出现错误,需要将语句:
WORDLIST_FILENAME=""
修改为类似如下形式(取决于存在哪个目录中):
WORDLIST_FILENAME="C:
\Users\Zhangjl\"
文件已经实现了几个函数,可以直接用于问题的解决,你可以忽略代码中的注释,不过还是建议读一下。
可以将自己的代码都写在这个文件里。
游戏要求:
1、计算机从单词表中随机地选取一个单词,实现这一点的代码已经提供在文件中。
2、游戏是交互式的,游戏的流程如下:
刚开始时,让用户知道单词的长度(即secretWord的长度)
每一轮让用户猜一次(一个字母)
用户能得到立即反馈,所猜字母是否是secret单词的字母
•每一轮,需要显示已经猜中的部分,以及用户没有猜过的字母
3.游戏的额外规则:
•用户可以猜8次.每一轮猜测后提醒他剩余多少次可猜。
假设用户总是每次输入一个字母(A-Z)。
•当用户错误猜测时,猜测次数减少1次。
•如果用户重复猜了已经猜过的字母,猜测次数不减,提醒他这个字母已经猜过了,并继续猜测。
•如果用户猜过的字母拼出了那个单词,游戏结束。
如果用户用完猜测次数(未猜中单词),游戏结束并揭示秘密单词。
样例(注:
有两类,仔细看哦,对写代码有好处)
赢了游戏应如下显示:
Loadingwordlistfromfile...
55900wordsloaded.
Welcometothegame,Hangman!
Iamthinkingofawordthatis4letterslong.
-------------
Youhave8guessesleft.
Availableletters:
abcdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
a
Goodguess:
_a__
------------
Youhave8guessesleft.
Availableletters:
bcdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
a
Oops!
You'vealreadyguessedthatletter:
_a__
------------
Youhave8guessesleft.
Availableletters:
bcdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
s
Oops!
Thatletterisnotinmyword:
_a__
------------
Youhave7guessesleft.
Availableletters:
bcdefghijklmnopqrtuvwxyz
Pleaseguessaletter:
t
Goodguess:
ta_t
------------
Youhave7guessesleft.
Availableletters:
bcdefghijklmnopqruvwxyz
Pleaseguessaletter:
r
Oops!
Thatletterisnotinmyword:
ta_t
------------
Youhave6guessesleft.
Availableletters:
bcdefghijklmnopquvwxyz
Pleaseguessaletter:
m
Oops!
Thatletterisnotinmyword:
ta_t
------------
Youhave5guessesleft.
Availableletters:
bcdefghijklnopquvwxyz
Pleaseguessaletter:
c
Goodguess:
tact
------------
Congratulations,youwon!
输了游戏如下显示:
Loadingwordlistfromfile...
55900wordsloaded.
WelcometothegameHangman!
Iamthinkingofawordthatis4letterslong
-----------
Youhave8guessesleft
AvailableLetters:
abcdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
a
Oops!
Thatletterisnotinmyword____
-----------
Youhave7guessesleft
AvailableLetters:
bcdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
b
Oops!
Thatletterisnotinmyword____
-----------
Youhave6guessesleft
AvailableLetters:
cdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
c
Oops!
Thatletterisnotinmyword____
-----------
Youhave5guessesleft
AvailableLetters:
defghijklmnopqrstuvwxyz
Pleaseguessaletter:
d
Oops!
Thatletterisnotinmyword____
-----------
Youhave4guessesleft
AvailableLetters:
efghijklmnopqrstuvwxyz
Pleaseguessaletter:
e
Goodguess:
e__e
-----------
Youhave4guessesleft
AvailableLetters:
fghijklmnopqrstuvwxyz
Pleaseguessaletter:
f
Oops!
Thatletterisnotinmyworde__e
-----------
Youhave3guessesleft
AvailableLetters:
ghijklmnopqrstuvwxyz
Pleaseguessaletter:
g
Oops!
Thatletterisnotinmyworde__e
-----------
Youhave2guessesleft
AvailableLetters:
hijklmnopqrstuvwxyz
Pleaseguessaletter:
h
Oops!
Thatletterisnotinmyworde__e
-----------
Youhave1guessesleft
AvailableLetters:
ijklmnopqrstuvwxyz
Pleaseguessaletter:
i
Oops!
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))
False
2、函数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移除,用户重复猜了的字母,你需要告知用户你已经猜过这个字母。
Theend
importrandom
importstring
WORDLIST_FILENAME=""
defloadWords():
print("Loadingwordlistfromfile...")#inFile:
file
inFile=open(WORDLIST_FILENAME,'r',-1)#line:
string
line=()#wordlist:
listofstrings
wordlist=()
print("",len(wordlist),"wordsloaded.")
returnwordlist
defchooseWord(wordlist):
return(wordlist)
defisWordGuessed(secretWord,lettersGuessed):
forcinset(secretWord):
ifnotcinlettersGuessed:
returnFalse
else:
returnTrue
defgetGuessedWord(secretWord,lettersGuessed):
ss=""
forsinset(lettersGuessed):
ifsinsecretWord:
ss=ss+s
returnss
defgetAvailableLetters(lettersGuessed):
s="abcdefghijklmnopqrstuvwxyz"
forcinlettersGuessed:
s=(c,'')
returns
defhangman(secretWord):
print("Welcometothegame,Hangman!
")
print("Iamthinkingofawordthatis%dletterslong."%len(secretWord))
lettersGuessed=''
AvailableLetters=getAvailableLetters(lettersGuessed)
GuessedWord=getGuessedWord(secretWord,lettersGuessed)
tmp_str=""
foriinrange(0,len(secretWord)):
tmp_str=tmp_str+"_"
left=8
whileleft>0:
print("------------")
print("Youhave",left,"guessesleft.")
print("Availableletters:
",AvailableLetters)
print("Pleaseguessaletter:
",end='')
while1:
c=input()
if('a'<=c<='z'or'A'<=c<='Z')andlen(c)==1:
c=()
break
print("Wronginput!
Pleaseguessaletter:
")
ifcinlettersGuessed:
print("Oops!
You'vealreadyguessedthatletter:
",tmp_str)
else:
lettersGuessed=lettersGuessed+c
AvailableLetters=getAvailableLetters(lettersGuessed)
ifcinsecretWord:
GuessedWord=GuessedWord+c
tmp_str=""
fortmpinsecretWord:
iftmpinGuessedWord:
tmp_str=tmp_str+""+tmp
else:
tmp_str=tmp_str+""+"_"
print("Goodguess:
",tmp_str)
ifisWordGuessed(secretWord,lettersGuessed):
print("Congratulations,youwon!
")
break
else:
left=left-1
print("Oops!
Thatletterisnotinmyword:
",tmp_str)
ifnotisWordGuessed(secretWord,lettersGuessed):
print("Sorry,youranoutofguesses.Thewordwaselse.")
wordlist=loadWords()
secretWord=chooseWord(wordlist)
hangman(secretWord)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 综合 练习