游戏规则,计算机想一个单词让你猜,你每次可以猜一个字母,如果单词里有那个字母,所有该字母都会显示出来,如果没有那个字母,则计算机会在一副“刽子手”画上填一笔,这幅画一共需要7笔就能完成,因此你最多只能错6次。注意猜一个已经猜过的字母也算错。
在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了,(You win.)、输了(You lose.)、还是放弃了(You give up.)
每组包含3行,第一行是游戏编号(-1为输入结束标记),第2行是计算机想的单词,第3行是玩家的猜测。后两行保证只含小写字母。
代码如下:
def gue(ans,guess):
a=set(ans) #消除掉答案中的重复元素
b=list(ans)
c=set() #用来储存猜测的字母
flag=0
for i in guess:
if not c.isdisjoint(i): #如果c集合里有i,猜一个已经猜过的字母,算错
flag+=1
c.update(i) #往c中添加i
if a.isdisjoint(i): #如果a中不存在i,说明猜错一次
flag+=1
else:
for j in range(0,len(b)): #猜对了,使答案中相应字母都替换为0
if b[j]==i:
b[j]=0
if not any(b) and flag<=6:
return 1
elif flag>=7:
return 0
else:
return -1
n=int(input())
l=[]
while n!=-1:
ans=str(input())
guess=str(input())
m=gue(ans,guess)
l.append(m)
n=int(input())
for i in range(1,len(l)+1):
if l[i-1]==1:
print("Round %d"%i)
print("You win")
elif l[i-1]==0:
print("Round %d"%i)
print("You chickened out")
else:
print("Round %d"%i)
print("You lose")
运行结果: