Python:代码违反条件取决于输入

时间:2016-03-24 21:21:14

标签: python-2.7 class while-loop iteration

我正在做一个挂人游戏。当我使用条件和类创建代码时,它工作正常。基本上我对以下代码的问题是:

  1. 只有字母" t"会匹配。我无法收到任何其他信件。

  2. 如果我进入" t"在第一次尝试时,然后故意让接下来的4个字母错误,它将在7个回合之后结束。然而,如果我先输入任何其他字母,它将在4次错误转弯后结束,就像应该这样。

  3. 我的问题......

    1. 如何让它与self.word索引中的其他字母匹配?

    2. 如果我输入" t"为什么它不遵守我在main方法中使用while循环设置的条件。在我的第一次尝试,并在此后得到其他所有字母错误?

      class Hang():
      
          def __init__(self):
              self.turns = 0
              self.word = ['t', 'h', 'i', 's']
              self.empty = ["__", "__", "__", "__"]
              self.wrong = []
      
          def main(self):
              while self.turns < 4:
                  for i in self.word:
                      choice = raw_input("Enter a letter a-z: ")
                      if choice == i:
                          index = self.word.index(i)
                          self.empty.pop(index)
                          self.empty.insert(index, i)
                          print self.empty
                      else:
                          print "Wrong"
                          self.wrong.append(choice)
                          print self.wrong
                          print self.empty
                          self.turns += 1
      
      char1 = Hang()
      char1.main()
      

1 个答案:

答案 0 :(得分:0)

在刽子手的游戏中,您可以按任意顺序猜出短语中的任何字符。但是你使用for循环按顺序遍历每个角色,只有当玩家按顺序正确猜出角色时它才是正确的

试试这个

while self.turns < 4:

    choice = raw_input("Enter a letter a-z: ")

    # optional, if user enters more than a single letter
    if len(choice) > 1:
        print "invalid choice"
        continue                   # loop again from start

    index = self.word.index(choice)

    if index != -1:    
        # -1 indicates character in not int the string
        # so this block is only executed if character is
        # in the string

        self.empty[index] = choice     # no need to pop, you can simply change the value of the list at a given index

    else:
        print "wrong"
        self.turns += 1

    print self.empty