python综合练习附代码.docx
- 文档编号:8732878
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:15
- 大小:42.55KB
python综合练习附代码.docx
《python综合练习附代码.docx》由会员分享,可在线阅读,更多相关《python综合练习附代码.docx(15页珍藏版)》请在冰豆网上搜索。
python综合练习附代码
综合练习
一、要求:
本综合练习为选作,但建议完成;
3、如果完成,可在总评成绩中体现。
二、题目(任选一个)
结合个人实际工作内容,应用Python语言编程计算。
2、
设计完成一个单词游戏:
HANGMAN。
请按题目指导逐步完
成。
这是一个经典单词游戏Hangman的变形设计。
如果你对游戏规
(https:
//en.wikipedia,org/wiki/Hangman_(game))o此处第二玩家始终是计算机,它会随机选择一个单词(即下文经常用到的secretword)
在这个问题中,你将实现函数hangman(最后需要完成的函数),程序将在玩家与计算机之间交互运行。
在完成这个函数的设计之前,需要先创建几个辅助函数。
首先下载两个文件ps3_hangman.py和words.1x4存放在同一个
目录中。
打开并运行文件Ps3_hangman.py,不要做任何修改,以保
证正确运行。
题目所给的代码从文本文件worslxt中装载单词列表,如果运行正常应该可以看到:
Loadingwordlistfromfile…55909wordsloaded.
如果岀现错误,需要将语句:
WORDLIST_FILENAME="words.txF
修改为类似如下形式(取决于words.txt存在哪个目录中):
WORDLIST_FILENAME="C:
\Users\Zhangjl\words.txf'
文件Ps3_hangman.py已经实现了几个函数,可以直接用于问题的解决,你可以忽略代码中的注释,不过还是建议读一下。
可以将自己的代码都写在这个文件里。
游戏要求:
1、计算机从单词表中随机地选取一个单词,实现这一点的代码己经
提供在文件中。
2、游戏是交互式的,游戏的流程如下:
•刚开始时,让用户知道单词的长度(即secretword的长度)-侮一轮让用户猜一次(一个字母)-用户能得到立即反馈,所猜字母是否是secret单词的字母-每一轮,需要显示已经猜中的部分,以及用户没有猜过的字母
3・游戏的额外规则:
-用户可以猜8次.每一轮猜测后提醒他剩余多少次可猜。
假设用户
总是每次输入一个字母(A・Z)。
当用户错误猜测时,猜测次数减少1次。
-如果用户重复猜了已经猜过的字母,猜测次数不减,提醒他这个
字母己经猜过了,并继续猜测。
-如果用户猜过的字母拼出了那个单词,游戏结束。
如果用户用完
猜测次数(未猜中单词),游戏结束并揭示秘密单词。
样例(注:
有两类,仔细看哦,对写代码有好处)
赢了游戏应如下显示:
Loadingwordlistfromfile...
55900wordsloaded.
Welcometothegame.Hangman!
Iamthinkingofa
Youhave8guessesAvailableletters:
Pleaseguessaletter:
aGoodguess:
_a__
Youhave8guessesleft.
Availableletters:
bcdefghijklmnopqrstuvwxyzPleaseguessaletter:
a
Oops!
You'vealreadyguessedthatletter:
_a__
Youhave8guessesleft.
Availableletters:
bcdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
s
Oops!
Thatletterisnotinmyword:
_a__
Youhave7guessesleft.
Availableletters:
bcdefghijklmnopqrtuvwxyz
Pleaseguessaletter:
t
Goodguess:
ta_t
Youhave7guessesleft.
Availableletters:
bcdefghijklmnopqruvwxyzPleaseguessaletter:
r
Oops!
Thatletterisnotinmyword:
ta_t
Youhave6guessesleft.
Availableletters:
bcdefghijklmnopquvwxyzPleaseguessaletter:
m
Oops!
Thatletterisnotinmyword:
ta_t
Youhave5guessesleft.
Availableletters:
bcdefghijklnopquvwxyz
Pleaseguessaletter:
c
Goodguess:
tact
Congratulations,youwon!
输了游戏如下显示:
Loadingwordlistfromfile...55900wordsloaded.
WelcometothegameHangman!
Iamthinkingofa
Youhave8guesses
AvailableLetters:
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__
Youhave3guessesleft
AvailableLetters:
ghijklmnopqrstuvwxyz
Pleaseguessaletter:
g
Oops!
Thatletterisnotinmyworde__
Youhave2guessesleft
AvailableLetters:
hijklmnopqrstuvwxyz
Pleaseguessaletter:
h
Oops!
Thatletterisnotinmyworde__
Youhave1guessesleft
AvailableLetters:
ijklmnopqrstuvwxyz
Pleaseguessaletter:
i
Oops!
Thatletterisnotinmyworde_
Sorry,youranoutofguesses.Thewordwaselse.
需要完成下列三个辅助函数:
函数isWordGuessed(secretWord,lettersGuessed),它有2个参数:
一个字符串secretWord,一个字符列表lettersGuessed。
函数返回逻辑值,如果secretWord己经被猜中(ie,secretWord
中的所有字母都在lettersGuessed)返回True,否则返回False。
假设secretWord与lettersGuessed都是小写字母。
例如:
»>secretWord='apple'
»>lettersGuessed=[*e\*i\*k\'p*,'r
2、
»>print(isWordGuessed(secretWord,lettersGuessed))False
函数getGuessedWord(secretWord,lettersGuessed)t它有2个输
入参数:
一个字符串secretWord»一个字母列表lettersGuessedo
函数返回一个字符串,该返回串由字母与下划线组成,内容取决于leUersGuessed中的字母是否是secretWord的字母.这个
函数不应该与前而编写的代码isWordGuessed相差太大。
当在字符串中加入下划线时,要在后而加至少一个空格,这样
用户看还有多少个字母未猜中会更清楚(比较一下形式_与
假设secretWord和lettersGuessed都是小写字母。
例如:
»>secretWord='apple'
»>lettersGuessed=['令*i\*k\'p',*r»>printgetGuessedWord(secretWord,lettersGuessed)
>>
3、
_PP_e
函数getAvailableLeUers(lettersGuessed)>它接受一个输入参数:
一个字母列表lettersGuessedo函数返回所有没有被猜测过(即
不在lettersGuessed中)的小写字母按字母顺序组成的字符串。
假设lettersGuessed中的字母都是小写的。
例如:
lettersGuessed=[*e\*i*,'k','p',*r
»>printgetAvailableLetters(lettersGuessed)Abcdfghjlninoqtuvwxyz
最后要完成的函数hanman;
hangman(secretWord)>它有一个输入参数:
用户需要去猜测的单
词secretWord(后续程序用到的变ft名)。
由它开始游戏程序Hangman
用户与计算机的交互过程。
确保你用到之前部分设计完成的辅助函数
isWordGuessed、etGuessedWord和getAvailableLetters。
使用函数lowerO来将用户的输入转换为小写。
有4个重要的信息需要保存:
secretWord:
猜测的目标单词
(2)
lettersGuessed:
追踪用户猜测过的字母
(3)
mistakesMade:
记录用户猜测错误的次数
(4)
availableLetters:
还可以用来被猜测的字母,用户猜测过
的字母需要从availableLetters移除,用户重复猜了的字
母,你需要告知用户你己经猜过这个字母。
Theend
FileEditFormatRun
importrandenImporisiring
OptionsWindowHelp
WORDLIST_PILEriABE=ckf
loadVordfit):
Words,t*
vordlistironfiLu.inFi1c:
file
def
def
def
def
def
print("Loading
in?
i2e=open(WORDLISTFILEKAHE,5',-1)#line:
strLnsline=InFile.reQdlineDlvordiist:
listofstringsvordlist=linu,split。
printC",2en cliooseWordCwcrdlist): retximrandon.choice(v^rdlist) isWordGuessed(secretWord,lettersGuessed): forcir.set(secretWord): ifnotcinIcitcrsCucsscd: returnFalse el3C: returnTni^ getCuessedffordCsecretV^rilettersGuessed): ss= forsi・,setOettersGuessed): if5insecretfford: ss=ss-*s rettaxi$s getAvailableLetters(IcltcTsCucsscd): s/abedefghijkl皿opgr5wwxyz■forcinIcttcrsGucsscd: g=s・replace(c,^")rctim5 lungnanCfiecrexffoxd): print(**Iffelcojietotheganie,Hangaan/)print(*Ionthinkingofawordthatis%dletterslong,*KLw(sccrctVord))lettersGuessed^^'» AvailableLetters^getAvailableLeiters(leitersCuessed)GucsscdWord=gciGucsscdVordCsccrctHlordjlettersGuesscd)sp.Sir二八forii二range(0,len.Csecrexfford)): ■tap_slr=tnp3廿+匚*3eft=8"" whilelefi>0: printCprintVprim(QprintCvlille1: O Youhflve*■,Left,guessesleft. Availableletters: AvalLabieLetters)Plua5«guessaletter: cnd=^*) c=iiiput0: •C『<=c<=T-r*A^<=c<=r)andlcn(c)==l: c=c.lowerOtreak printCWrongii^xit1Pluasuguessaletter;,〉IfcInlettersGuessed: printCOops1You'vealreadyguessedthatLetter: Siic_STr》ul«*: LettersGuessed^letiersGuessed+c AvaiLab1eLetters=getAvallableLeilers(lettersGuessed): : cinsccrctVord: GuesfiedWord=Guessed/or(h-crnp_sir=**rortnpinsecretWord: •「tjipi: .GuessedWord: tiip_5tr=tJtp_str-»-^Jn®ek■: tnp^str-tJip.stk十*crintCGoodguess '•isVordGucsscd(sccrctVordjIct-tcrsGucsscd): printCCongratuLatlcns,youvon! *)treax Left-left-l tTintCOeps! Thatletterisnotinnvword: *,tap^str)ifno1isVordCucssed(secretWord,IcltcrsCucsscd): printt*Scrry^youranoutofguesses.Tlieivcrdvaselse.,) vordlist=loadNwdsOsecTetWord=chooeeVordtword31st)hangaan(secretIfferd) fileEditShellDebugOptionsWindowHelp JJj厶A・J■*-P*■•♦*♦ PleaseguessaIcltcx: d OopsIThatletterIsnotinnvword: _an_ Youhave5guesseslefl. AvailableLextersibceghijblnLOpqrstwxyz Pleaseguess4letter: b Goodguess: ban YouhaveSguessesleft. AvailableLextersiceghlJkLnopcjrstwxyzPleaseguessaletter: WrongInput1Plcaseguessaletter: VrongInput! ? leasegue$saletter; EfronsinputlPleaseguess8letter: Vronginput! PLuasualetter: c WronginpTitlPleaseguessaletter: OopslThatletterisnotinnyword: ban Youhave4guessesleft. Availableletters: eghijklJiopqrsiwxysPleaseguessaletteric Oops! ? ou* VCalreadyguessedthatIciter: b Youhave4guessesleft. AvailableIcHcrs: cghijklnopqrslwxyxPleaseguessaleiter: ^ OopsIThatletterisnotinnyword: ban Youhave3guessesleft. Availablelettersleghljklnporstvvrxy? : PleaseguessaIcltcx: c Goodguess: ban_e_ Ycuhave3guessesleft. AvailableleTtersighljkliirQrstvvxvz Pleaseguess4Letter: r Goodguess: ban_er Youhave3guessesIcft-Avall&blelexters: ghlJklj: pqstwxyzPleaseguessaleitexg OopsIThatletterLsnotint\yword: ban Youhsve2guesseslefl- AvailablrIcHcrs: hijkiapqsQvwxyz Pleaseguessaleiter: h OopsIThatletterisnotinnyword: ban. Youhave1guessesleft. Availobicletters: ijklnpQsivwxyzPleaseguessaletter: guessaletter: Wrong inpTitlPlease Tfrons InputIPlease guessaletter: iVrong input1Pluasc guessaletter; g OepsI You'vealreadyguessedthat letter: Youhave1guessesleft. Availableletters: ijklnpQstvwxyzPleaseguessaLeiier: cOops! You'vealreadyguessedthat Leiter: Veuhave1guess”left. Availableletters: ijblapQstwsyz PleaseguessaIcttcrid Oeps1YouVCalreadyguessedthat Icltcx: Youhave1guessesleft.Availableleiters: 1JklnpqeiwxyzPleaseguessaleTtermOops! ? ou* VCalreadyguc^ssedthat letter: Youhave1guessesleft. AvailableIcHcrs: ijklnpqslvwxyxPleaseguessaLeitad OopsIYouvealreadyguessedthat letter: Youhave1guenesleft. Availableletters: ijklnpQSivwxyz PicascguessaLettexit OopsIThatletterIsnotinnyword: ban- youronoutofguesses.Thevrordvroselse. Ln: 134Cob4 RteEditShellDebugOptionsWindowHelp Python3.6.2(v3-S.2: 5fdSSbS,Jul82017,04: 14: 30[HSCv.l90032bit(Inicl)]onvin32Type"copyright",**credits^or^llcenseO^forjioreInloniailon- »> RESTART: 我的文档2\PythQn导论\综合练习\新建文本文栏・py二; Loading^ordlistfromfile.・•55909vordsloaded. Velcgetothesane,Hansnan! Ianthinkingofawordthatis6letterslong, Youtiave8guessesleft. Aval1obieIctlcrs: abedefghijkInnopgrsluwxyzPleaseguessaleiter: s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 综合 练习 代码