我从网上得到了代码,并做了一些修改。
我希望每个国家都输入一次国家名称。每当我运行代码时,有时每隔几转就会询问同一国家的名称。我可以限制为一次吗?
此外,有时即使我输入了正确的国家名称,也会看到“ You Lost”的错误消息。
首先,我尝试使用随机随机播放,但是出现错误。
import random
from collections import Counter
fruits = """algeria spain armenia barbados chile ecuador ghana jamaica luxemborg kuwait monaco
senegal turkey"""
fruit1 = random.choice(fruits.split(" "))
if __name__ == "__main__":
print("Hangman Game: Guess the name of the Country \n You have {} chances".format(len(fruit1)+3))
for i in fruit1:
print("_" , end=" ")
print()
#playing = True
chances = len(fruit1) + 3
Guess = ""
count = 0
try:
while (chances != 0):
print()
chances -= 1
try:
guess = str(input("Enter a letter: "))
except:
print("Enter only a letter")
continue
if not guess.isalpha():
print("Enter only an alphabet")
chances +=1
continue
elif len(guess)>1:
print("Enter only a single alphabet")
chances +=1
continue
elif guess in Guess:
print("Letter already guessed")
chances += 1
continue
if guess in fruit1:
Guess += guess
for q in fruit1:
if q in Guess:
print(q,end = " ")
count +=1
else:
print("_",end=" ")
if (Counter(Guess) == Counter(fruit1)):
print()
print("Congratulations")
break
if chances == 0:
print()
print("You lost")
print("The word was: {}".format(fruit1))
except KeyboardInterrupt:
print()
print("Bye")
exit()
答案 0 :(得分:1)
- 我可以将相同的[name]限制为1次吗?
您不能轻易地跨越不同的调用。每次启动程序时,它都以干净的状态开始,而不知道以前的运行中可能发生了什么。因此,您将必须将使用过的单词保存在文件中并在程序开始时读取该文件(如果存在),或者使程序循环并提出一个新名称。
无论哪种情况,都应从fruits
列表中删除使用的名称。
- 有时...即使正确输入了国家名称,也会显示“您丢失了”。
您正在比较计数器。如果名称不重复字母是很好的,因为在这种情况下,每个字母的计数为1。但是对于armenia
,Counter(fruit)
将包含'a': 2
,而Counter(Guess)
将具有'a': 1
。您应该将其与set
进行比较:
if (set(Guess) == set(fruit1)):