python综合练习附代码Word格式文档下载.docx
《python综合练习附代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《python综合练习附代码Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
words.txt"
修改为类似如下形式(取决于words.txt存在哪个目录中):
C:
\Users\Zhangjl\words.txt"
文件ps3_hangman.py已经实现了几个函数,可以直接用于问题的解决,你可以忽略代码中的注释,不过还是建议读一下。
可以将自己的代码都写在这个文件里。
游戏要求:
1、计算机从单词表中随机地选取一个单词,实现这一点的代码已经提供在文件中。
2、游戏是交互式的,游戏的流程如下:
•刚开始时,让用户知道单词的长度(即secretWord的长度)
•每一轮让用户猜一次(一个字母)
•用户能得到立即反馈,所猜字母是否是secret单词的字母
•每一轮,需要显示已经猜中的部分,以及用户没有猜过的字母
3.游戏的额外规则:
•用户可以猜8次.每一轮猜测后提醒他剩余多少次可猜。
假设用户总是每次输入一个字母(A-Z)。
•当用户错误猜测时,猜测次数减少1次。
•如果用户重复猜了已经猜过的字母,猜测次数不减,提醒他这个字母已经猜过了,并继续猜测。
•如果用户猜过的字母拼出了那个单词,游戏结束。
如果用户用完猜测次数(未猜中单词),游戏结束并揭示秘密单词。
样例(注:
有两类,仔细看哦,对写代码有好处)
赢了游戏应如下显示:
55900wordsloaded.
Welcometothegame,Hangman!
Iamthinkingofawordthatis4letterslong.
-------------
Youhave8guessesleft.
Availableletters:
abcdefghijklmnopqrstuvwxyz
Pleaseguessaletter:
a
Goodguess:
_a__
------------
bcdefghijklmnopqrstuvwxyz
Oops!
You'
vealreadyguessedthatletter:
s
Thatletterisnotinmyword:
Youhave7guessesleft.
bcdefghijklmnopqrtuvwxyz
t
ta_t
bcdefghijklmnopqruvwxyz
r
Youhave6guessesleft.
bcdefghijklmnopquvwxyz
m
Youhave5guessesleft.
bcdefghijklnopquvwxyz
c
tact
Congratulations,youwon!
输了游戏如下显示:
WelcometothegameHangman!
Iamthinkingofawordthatis4letterslong
-----------
Youhave8guessesleft
AvailableLetters:
Thatletterisnotinmyword____
Youhave7guessesleft
b
Youhave6guessesleft
cdefghijklmnopqrstuvwxyz
Youhave5guessesleft
defghijklmnopqrstuvwxyz
d
Youhave4guessesleft
efghijklmnopqrstuvwxyz
e
e__e
fghijklmnopqrstuvwxyz
f
Thatletterisnotinmyworde__e
Youhave3guessesleft
ghijklmnopqrstuvwxyz
g
Youhave2guessesleft
hijklmnopqrstuvwxyz
h
Youhave1guessesleft
ijklmnopqrstuvwxyz
i
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都是小写字母。
printgetGuessedWord(secretWord,lettersGuessed)
'
_pp_e'
3、函数getAvailableLetters(lettersGuessed),它接受一个输入参数:
一个字母列表lettersGuessed。
函数返回所有没有被猜测过(即不在lettersGuessed中)的小写字母按字母顺序组成的字符串。
假设lettersGuessed中的字母都是小写的。
lettersGuessed=['
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
defloadWords():
print("
Loadingwordlistfromfile..."
)#inFile:
file
inFile=open(WORDLIST_FILENAME,'
-1)#line:
string
line=inFile.readline()#wordlist:
listofstrings
wordlist=line.split()
"
len(wordlist),"
wordsloaded."
)
returnwordlist
defchooseWord(wordlist):
returnrandom.choice(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=s.replace(c,'
returns
defhangman(secretWord):
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:
------------"
Youhave"
left,"
guessesleft."
AvailableLetters)
end='
while1:
c=input()
if('
a'
<
=c<
='
z'
or'
A'
Z'
)andlen(c)==1:
c=c.lower()
break
Wronginput!
Pleaseguessaletter:
ifcinlettersGuessed:
tmp_str)
lettersGuessed=lettersGuessed+c
ifcinsecretWord:
GuessedWord=GuessedWord+c
fortmpinsecretWord:
iftmpinGuessedWord:
+tmp
+"
_"
ifisWordGuessed(secretWord,lettersGuessed):
left=left-1
Oops!
ifnotisWordGuessed(secretWord,lettersGuessed):
Sorry,youranoutofguesses.Thewordwaselse."
wordlist=loadWords()
secretWord=chooseWord(wordlist)
hangman(secretWord)