Hangman程序中的基本for循环

时间:2019-05-14 10:18:11

标签: python

尝试编写一些适用于子手游戏的代码,我通常对代码和Python还是陌生的,因此我的代码似乎乏味或效率低下。我特别需要最后一个for循环的帮助。

import random
def_ = []
colours = ["orange", "blue", "yellow", "red", "gray"]

category = input("Please select a category to play from: 1) Colours - 2) Animals - 3) People: ") #lets only do the colours case for now

if category == "1":
  rannum = random.randint(0, len(colours)-1)
  word = colours[rannum]
  i = 0
  print(word)
  for i in range(len(word)):
    def_.append("_")

  wordlist = str.lower(word)
  i = 0
  x = 0

  for i in range(0,8):
    guess = input("Please enter a letter that you think is in the word: ")
    for x in range(0, len(wordlist)):
      if str.lower(guess) == wordlist[x]:
        def_[x] = wordlist[x]
        print("".join(def_))
      else:
        print("".join(def_))
        continue

例如,如果颜色是blue,并且用户猜到了u,我希望程序显示__u_,而程序显示:

____
____
__u_
__u_

我相信该程序无论字符串有多长都在循环,并希望查看输入的字符是否与该迭代中涉及的字符匹配,以及每次打印该行时,我都希望它仅显示一次。

2 个答案:

答案 0 :(得分:0)

您只需要删除print语句中的else,它就可以正常工作(您也可以完全删除else语句,因为它没有用)。另外,正如Morten所指出的那样,您应该将printif语句中移出,以避免在出现多个匹配字母的情况下进行多次打印。

编辑:一个小技巧,您无需在for循环中使用变量之前就对其进行声明和初始化。

答案 1 :(得分:0)

print循环中删除for,并将其放在for循环之后,看看会发生什么;)

如果将其保留在if语句中,则包含多个字母实例的单词将被多次打印。例如,当单词是黄色时,如果将其保留在if语句中并将其从else语句中删除,则会得到“ __l___”和“ __ll__”的打印输出。