-
综合练习
一、要求:
1
、
2
、
3
、
二、
题目(任选一个)
1
、
2
、
设计完成一个单词游戏
:
HANGMAN
。请按题目指导逐步完成。
< br>这是一个经典单词游戏
Hangman
的变形设计。
p>
如果你对游戏规则
不熟悉,可以点击链接()
。此处第二玩家始终是计算机,它会随机
选择一个单词(即下文经常用到的
secretWord
)
在这个问题中,你将实现函数
hangman
(最后需要完成
的函数)
,
程序将在玩家与计算机之间交互运行。在完成这个函
数的设计之前,
需要先创建几个辅助函数。
首先下载两个文件
和
,存放在同一个目录中。打开并运
行文
件
,不要做任何修改
,
以保证正确运行。
题目所给的代码从
文本文件中装载单词列表,
如果运行正常应该
可以看到:
Loading word list from
file...
结合个人实际工作内容,应用
Python
语言编程计算。
本综合练习为选作,但建议完成;
完
成时间:
2017
年
11
月
28
日之前;
如果完成,可在总评成绩中体现。
55909 words loaded.
如果出现错误,需要将语句:
WORDLIST_FILENAME =
修改为类似如下形式(取决于存在哪个目录中)
:
WORDLIST_FILENAME =
文件
已
经实现了几个函数,
可以直接用于问题的解决,
你可以
忽略代码中的注释,
不过还是建议读一下。
可以
将自己的代码都写在
这个文件里。
游戏要求
:
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:
abcdefghijklmnopqrstuvwxyz
Please guess a letter: a
Good guess: _ a_
_
------------
You have 8 guesses left.
Available letters:
bcdefghijklmnopqrstuvwxyz
Please guess a letter: a
Oops! You've already
guessed that letter: _ a_ _
------------
You have 8 guesses left.
Available letters:
bcdefghijklmnopqrstuvwxyz
Please guess a letter: s
Oops! That letter is not in
my word: _ a_ _
------------
You have 7 guesses left.
Available letters:
bcdefghijklmnopqrtuvwxyz
Please guess a letter: t
Good guess: ta_
t
------------
You have 7 guesses left.
Available letters:
bcdefghijklmnopqruvwxyz
Please guess a letter: r
Oops! That letter is not in
my word: ta_ t
------------
You have 6
guesses left.
Available
letters: bcdefghijklmnopquvwxyz
Please guess a letter: m
Oops! That letter is not in my word:
ta_ t
------------
You
have 5 guesses left.
Available letters:
bcdefghijklnopquvwxyz
Please
guess a letter: c
Good
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 left
Available Letters:
abcdefghijklmnopqrstuvwxyz
Please guess a letter: a
Oops! That letter is not in
my word _ _ _ _
-----------
You have 7 guesses left
Available Letters:
bcdefghijklmnopqrstuvwxyz
Please guess a letter: b
Oops! That letter is not in
my word _ _ _ _
-----------
You have 6 guesses left
Available Letters:
cdefghijklmnopqrstuvwxyz
Please guess a letter: c
Oops! That letter is not in
my word _ _ _ _
-----------
You have 5 guesses left
Available Letters:
defghijklmnopqrstuvwxyz
Please guess a letter: d
Oops! That letter is not in
my word _ _ _ _
-----------
You have 4 guesses left
Available Letters:
efghijklmnopqrstuvwxyz
Please guess a letter: e
Good guess: e_ _
e
-----------
You have 4 guesses left
Available Letters:
fghijklmnopqrstuvwxyz
Please
guess a letter: f
Oops! That
letter is not in my word e_ _ e
-----------
You
have 3 guesses left
Available Letters:
ghijklmnopqrstuvwxyz
Please
guess a letter: g
Oops! That
letter is not in my word e_ _ e
-----------
You
have 2 guesses left
Available Letters:
hijklmnopqrstuvwxyz
Please
guess a letter: h
Oops! That
letter is not in my word e_ _ e
-----------
You
have 1 guesses left
Available Letters:
ijklmnopqrstuvwxyz
Please
guess a letter: i
Oops! That
letter is not in my word e_ _ e
-----------
Sorry, you ran out of guesses. The word
was else.
需要完成下列三个辅助函数:
1
、
函数
isWordGuessed
(secretWord,
lettersGuessed)
,
它有
2
个
参<
/p>
数
:
一
个
字
符
串
secret
Word,
一
个
字
< br>符
列
表
lettersGues
sed
。
函数返回逻辑值
,
如果
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
个
输
入
参
数
:
p>
一
个
字
符
串
secretWord
,
一
个
字
母
列
表
lettersGuessed
。
函数返回一个字符串,该返回串由字母与下
划线组成,内容取决于
lettersGuessed
中的
字母是否是
secretWord
的
字
母
p>
.
这
个
函
数
不
应
该
与
前
面
编
写
的
代
码
isWordGuessed
相差太大。
当在字符串中加入下划线时,要在后面加至少一个空格,这样
用户看还有多少个
字母未猜中会更清楚
(
比较一下形式
__
与
_ _ _ _
)
。
假设
secretWord
和
lettersGuessed
都是小写字母。
例如:
>>>
secretWord = 'apple'
>>>
lettersGuessed = ['e', 'i', 'k', 'p', 'r',
's']
>>> print
getGuessedWord(secretWord,
lettersGuessed)
'_ pp_
e'
3
、
函数
getAvailableLetters
(lettersGuessed)
,它接受一个输
入参数:一个字母列表
lettersGuessed
。函数返
回所有没有被
猜测过
(即不在
lett
ersGuessed
中)
的小写字母按字母顺序组
成的字符串。
假设
le
ttersGuessed
中的字母都是小写的。
例如:
lettersGuessed = ['e', 'i', 'k', 'p',
'r', 's']
>>> print
getAvailableLetters(lettersGuessed)
Abcdfghjlmnoqtuvwxyz
最后要完成的函数
hanman
p>
:
hangman(secretWor
d)
,它有一个输入参数:用户需要去猜测的
单词
secretWord
(后续程序用到的变量名)
。由它开始游戏程序
Hangman
用户与计算机的交互过程。
确保你用到之前部分设计完成的
辅助函数
isWordGues
sed
、
etGuessedWord
和
getAvailableLetters
。
使用函数
lower()
来将用户的输入转换为小写。
有
p>
4
个重要的信息需要保存:
(
1
)
p>
s
ecretWord
:猜测的目标单词<
/p>
(
2
)
p>
l
ettersGuessed
:追踪用户
猜测过的字母
(
3
)
p>
m
istakesMade
:记录用户猜测
错误的次数
(
4
)
p>
a
vailableLetters
:
p>
还可以用来被猜测的字母,
用户猜测
过的字
母需要从
availableLetters
移除,用户重复猜
了
的字母,你需要告知用户你已经猜过这个字母。
The end
-
-
-
-
-
-
-
-
-
上一篇:A letter of complaint
下一篇:牛津英语二年级下册