python综合练习附代码.docx

上传人:b****7 文档编号:10268821 上传时间:2023-02-09 格式:DOCX 页数:13 大小:141.53KB
下载 相关 举报
python综合练习附代码.docx_第1页
第1页 / 共13页
python综合练习附代码.docx_第2页
第2页 / 共13页
python综合练习附代码.docx_第3页
第3页 / 共13页
python综合练习附代码.docx_第4页
第4页 / 共13页
python综合练习附代码.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

python综合练习附代码.docx

《python综合练习附代码.docx》由会员分享,可在线阅读,更多相关《python综合练习附代码.docx(13页珍藏版)》请在冰豆网上搜索。

python综合练习附代码.docx

python综合练习附代码

综合练习

一、要求:

1、本综合练习为选作,但建议完成;

2、完成时间:

2017年11月28日之前;

3、如果完成,可在总评成绩中体现。

二、题目(任选一个)

1、结合个人实际工作内容,应用Python语言编程计算。

2、设计完成一个单词游戏:

HANGMAN。

请按题目指导逐步完成。

这是一个经典单词游戏Hangman的变形设计。

如果你对游戏规则不熟悉,可以点击链接(https:

//en.wikipedia.org/wiki/Hangman_(game))。

此处第二玩家始终是计算机,它会随机选择一个单词(即下文经常用到的secretWord)

在这个问题中,你将实现函数hangman(最后需要完成的函数),程序将在玩家与计算机之间交互运行。

在完成这个函数的设计之前,需要先创建几个辅助函数。

首先下载两个文件ps3_hangman.py和words.txt,存放在同一个目录中。

打开并运行文件ps3_hangman.py,不要做任何修改,以保证正确运行。

题目所给的代码从文本文件wors.txt中装载单词列表,如果运行正常应该可以看到:

Loadingwordlistfromfile...

55909wordsloaded.

如果出现错误,需要将语句:

WORDLIST_FILENAME="words.txt"

修改为类似如下形式(取决于words.txt存在哪个目录中):

WORDLIST_FILENAME="C:

\Users\Zhangjl\words.txt"

文件ps3_hangman.py已经实现了几个函数,可以直接用于问题的解决,你可以忽略代码中的注释,不过还是建议读一下。

可以将自己的代码都写在这个文件里。

游戏要求:

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="words.txt"

defloadWords():

print("Loadingwordlistfromfile...")#inFile:

file

inFile=open(WORDLIST_FILENAME,'r',-1)#line:

string

line=inFile.readline()#wordlist:

listofstrings

wordlist=line.split()

print("",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("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=c.lower()

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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1