如何比较python中函数的输出?

2024-10-06 07:19:00 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,如果这是一个明显的问题,但我12岁,并试图写一些代码,以帮助我与我的科学项目,我试图看看哪个锁是最安全的。基本上,我的问题是,我需要弄清楚如何将函数的输出与if somethinghere()==somethingelse()进行比较。顺便说一下,我正在使用random模块。作为我尝试做的一个例子,这是比较代码部分:

def guessfixed(y):     
        y = print ("[",(random.randint(0, 9)),", ",(random.randint(0, 9)),", ",(random.randint(0, 9)),", ",(random.randint(0, 9)),", ",(random.randint(0, 9)),"]",sep="") #this is supposed to keep changing until it is the same as the key.
        return y

对于我正在比较的一部分,所有的[,]东西都是格式化它来比较它,而我正在比较的另一部分是

mylistkey = [] # the random generated key, this is supposed to stay the same.
for i in range(0,5):
    x = random.randint(0,9)
    mylistkey.append(x)

我想把它和:

while guessfixed(0) != mylistkey:
    if guessfixed(0) == mylistkey:
        print ("it worked!")
    if guessfixed(0) != mylistkey: #by the way, this is still in the loop
        print ("it did not quite work"),

我知道这不起作用的唯一方法是因为在完整的脚本中,我将键和猜测改为只有4个组合,所以键和猜测最终必须重叠,而且它一直在继续,据说在我杀死它之前尝试了100个组合。根据我的测试,猜测是固定的变化,而关键不。 再次感谢您的阅读,如果这是一个离题的问题或是非常明显的,我很抱歉。我今年12岁,所以我不太擅长写问题,但熟能生巧!你知道吗


Tags: thetokey代码ifisitrandom
2条回答

您需要guessfixed返回一个列表,以便将列表与列表进行比较,而不是将列表与字符串进行比较。不需要传入y(当然也不需要传入0您不能为其分配列表或字符串!)地址:

def guessfixed():
    return [random.randint(0, 9) for _ in range(5)]

(此外,print不会返回有用的值,因此将print的结果赋给y也没有意义。print生成标准输出,但只返回None。)

而且,每次调用guessfixed()都是在创建一个新的猜测。你知道吗

我猜你希望你的循环看起来像这样:

while True:
    next_guess = guessfixed()
    if next_guess == mylistkey:
        print("It worked!")
        break
    # else
    print("It did not quite work")

在这里,将结果放入变量并不是绝对必要的,但它可以帮助您查看发生了什么(您可以在代码中方便的地方添加print(next_guess),以查看发生了什么)。你知道吗

更重要的是,您可能希望使用暴力算法,而不是生成随机猜测。你越是随机猜测,你就越有可能猜测一个你以前至少试过一次的组合。你知道吗

另见Asking the user for input until they give a valid responseTesting all combinations in Python

干得好,詹姆斯!你知道吗

为了真正回答您的问题,我们需要了解比较函数return和list的用例。阅读python列表的更多信息-https://www.w3schools.com/python/python_lists.asp

在这个程序中,你需要看的东西很少

  • 您不需要guessfixed的参数,因为您正在对函数中的值进行硬编码
  • 对于所有函数调用,都需要括号-()
  • 编一个字符串与一个列表进行比较不是一个好主意。你知道吗
  • 我在这个程序中没有使用While循环

但是你已经有了一个很好的开始。坚持下去!!你知道吗

相关问题 更多 >