子手游戏查询

时间:2019-05-15 09:52:45

标签: python

我从网上得到了代码,并做了一些修改。

  1. 我希望每个国家都输入一次国家名称。每当我运行代码时,有时每隔几转就会询问同一国家的名称。我可以限制为一次吗?

  2. 此外,有时即使我输入了正确的国家名称,也会看到“ 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()

1 个答案:

答案 0 :(得分:1)

  
      
  1. 我可以将相同的[name]限制为1次吗?
  2.   

您不能轻易地跨越不同的调用。每次启动程序时,它都以干净的状态开始,而不知道以前的运行中可能发生了什么。因此,您将必须将使用过的单词保存在文件中并在程序开始时读取该文件(如果存在),或者使程序循环并提出一个新名称。 无论哪种情况,都应从fruits列表中删除使用的名称。

  
      
  1. 有时...即使正确输入了国家名称,也会显示“您丢失了”。
  2.   

您正在比较计数器。如果名称不重复字母是很好的,因为在这种情况下,每个字母的计数为1。但是对于armeniaCounter(fruit)将包含'a': 2,而Counter(Guess)将具有'a': 1。您应该将其与set进行比较:

if (set(Guess) == set(fruit1)):