Python 代码类似于智囊团

Python 代码类似于智囊团,python,python-2.7,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

我正在尝试创建一个简单的代码,类似于游戏策划,但有一个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:
           .....
随机导入
def masterkey():
代码=[]
i=0
当我<5时:
数字=random.randint(0,9)
代码。追加(数字)
i=i+1
打印代码
计数器=0
当计数器<10时:
计数器+=1
猜测=原始输入(“猜测我的五位数密码:”)
如果guess==代码:
打印“恭喜,你很幸运!”
其他:
.....
我知道这是不正确的,但在代码的这一部分中完全迷失了方向


谢谢。

我们不只是为您编写代码,这里有一些应该给您指引正确方向的指针:

  • 用最简单、最不含糊的方式写下你到底需要比较什么。例如,“计算用户输入的密码中存在的位数”“计算与密码位于同一位置的输入位数”

  • 研究如何独立完成这些步骤

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

如果你仍然被困在这里,回来问一个关于你被困在哪里的具体问题。(您如何获得与预期不同的结果,或者您收到了什么错误)


我们将等待:)

使用所有这些
while
循环并不是很好
for
循环不仅可以保存代码,而且更难引入一个bug。保存
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]
        ...
或者,您可以先将初始代码设置为字符串,从而将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: ")
        ...
最后一个提示:

如果您认为guess应该等于code:

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

将快速向您展示为什么不

guess
是一个字符串,
code
是一个数组。您可能需要比较:
guess==”。加入(code)
。第二,你的问题不清楚,你不知道到底是什么?对不起,我对编码相当陌生,我不知道我可以用什么操作来比较用户输入和计算机代码。我知道有.find()之类的函数,但不确定如何使用这些函数,也不确定计算机字符串是否可以接受。请理解,我应该自己学习,我已将用户输入转换为列表,但现在我甚至不确定如何进行比较。我该如何比较每个元素?一旦你把问题归结为一个小问题,并尝试编写代码,你就可以提出一个新的、更直接的问题;i、 e.“我正试图根据以下字符串计算列表中的匹配项:[1,2,3,4,5:'32513',但它表示没有匹配项。这是我的代码:
sum(我在秘密中回答我)
”。你会在几分钟内得到一大堆回复。一定要努力寻找这些小问题的重复,因为它们毫无疑问是存在的。