【问题标题】:Python - if statement inside while loop not respondingPython - while循环内的if语句没有响应
【发布时间】:2013-07-18 12:37:31
【问题描述】:

我在使用 while 循环中的 if 语句时遇到问题。

while pressed == 8 :
    print(answerlistx[randomimage], answerlisty[randomimage])
    entryx = e1.get()
    entryy = e2.get()
    answerx = answerlistx[randomimage]
    answery = answerlisty[randomimage]
    print(entryx, entryy)
    if e1 == answerx and e2 == answery:
        print("correct")
        canvas.delete(images)
        randomimage = random.randrange(0,49+1)
        scorecounter = scorecounter + 1
        game = PhotoImage(file=imagelist[randomimage])
        images = canvas.create_image(30, 65, image = game, anchor = NW)
        e1.delete(0, END)   
        e2.delete(0, END)
        pressed = ''
    else:
        print("incorrect")
        e1.delete(0, END)   
        e2.delete(0, END)
        pressed = ''

while 循环应该检查条目小部件的输入是否与答案匹配,但即使答案正确,它也会转到 else 语句。我在打印输入的 if 语句之前有 2 个打印语句,答案是什么,以防万一它没有,但它确实正确显示了它。我还认为这可能是字符串和整数的混合,所以我将答案列表中的所有答案都更改为字符串,但没有运气。 任何人都能够弄清楚它有什么问题吗? 提前致谢。

【问题讨论】:

  • 使用常识即可。如果它转到elsee1 == answerx and e2 == answery 不正确。时期。现在,找出原因。你检查过这些变量的类型和值吗?一些跟踪消息可以创造奇迹......
  • @KarolyHorvath OP 说“即使答案是正确的,它也会转到 else 语句”。
  • 只是查看代码的观察结果,但您确定您不打算将entryxentryyanswerxanswery 进行比较吗?因为这是您在比较之前打印的内容。目前,您正在比较 e1e2,您没有打印出来进行视觉验证。
  • @Haidro:我相信 python 编译器/运行时。我不相信OP。就这么简单。
  • @KarolyHorvath 这不是很好 tbh

标签: python if-statement while-loop


【解决方案1】:

您正在测试 条目对象 是否与答案相同。使用实际值:

if entryx == answerx and entryy == answery:

而不是针对 e1e2 进行测试。

【讨论】:

  • 目前这只是猜测,尽管我怀疑这是正确的答案。
  • 是的,它是正确的,但它告诉我我还不能接受答案,非常感谢 Martijn Pieters 的回答!
  • 很高兴能帮上忙! @justinfay:这不仅仅是猜测。 :-)
猜你喜欢
  • 2015-05-19
  • 1970-01-01
  • 2012-12-02
  • 2013-06-09
  • 2014-01-21
  • 2015-11-08
  • 2016-01-12
  • 2016-02-16
  • 1970-01-01
相关资源
最近更新 更多