代码类似于Mastermind

时间:2014-01-31 00:38:04

标签: python python-2.7

我正在尝试创建一个类似于游戏策划者的简单代码,但使用5位数密码,例如(0 2 5 3 9)。能够生成密码但丢失了关于如何使用用户输入与密码进行比较。任何提示,这就是我所拥有的。

import random   
def masterkey():
     code = []
     i = 0
     while i < 5:
          digit = random.randint(0,9)
          code.append(digit)
          i=i+1
     print code
     counter = 0
     while counter < 10:
          counter += 1
          guess = raw_input("Guess my five digit password: ")
          if guess == code:
               print "Congrats, you're lucky!"
          else:
           .....

我知道这不正确但完全丢失了这部分代码。

感谢。

2 个答案:

答案 0 :(得分:2)

我们不会为您编写代码,但这里有一些指示可以向您发送正确的方向:

  • 以最简单,最不模糊的方式记下您需要比较的完全。例如,&#34;计算密码中存在的用户输入中的位数&#34; &#34;计算输入数字的位数与密码&#34;

  • 位于同一位置
  • 研究如何独立完成每个步骤。

  • 一个接一个地在代码中实现这些解决方案。

如果您仍然遇到困难,请回到此处并询问有关您被困的地方的具体问题。 (您如何获得与预期不同的结果,或者您收到的错误)

我们将等待:)

答案 1 :(得分:0)

使用所有while循环并不是很好。 for循环不仅可以保存代码,还可以使一个错误更难引入。在您真正需要时保存while循环

import random   
def masterkey():
    code = [random.randint(0,9) for i in range(5)]
    for counter in range(10):
        guess = raw_input("Guess my five digit password: ")
        # guess is string, so need to convert it to a list of ints
        guess = [int(c) for c in guess]
        ...

或者,您可以通过首先将初始代码作为字符串将猜测作为字符串。这是一个更强大的功能,因为用户只需输入非数字就不会使程序崩溃。

import random   
def masterkey():
    code = "".join(random.choice("0123456789") for i in range(5))
    for counter in range(10):
        guess = raw_input("Guess my five digit password: ")
        ...

最后提示:

如果你认为猜测应该等于代码:

      if guess == code:
           print "Congrats, you're lucky!"
      else:
           print repr(guess), "!=", repr(code)

会很快告诉你为什么不