首页 > 解决方案 > 我的代码在 Python 中没有给我预期的结果

问题描述

(Codehs 内置了 Turtle)我在学校使用 codehs.com 上课,我们目前正在研究海龟图形。这些简单的 if/elif/else 语句对输入的数字没有正确反应。如果用户号码高于密码 (4),他们应该画一个向下箭头,如果它低于密码号码,他们应该画一个向上箭头。当用户输入一个不是秘密数字的数字时,它会显示任一箭头并为用户重新打开输入。如果数字猜对了,它会显示一个复选标记。

我尝试研究我的问题,但找不到与我的具体问题相关的任何内容。

    user_number = int(input("Choose a number between 1 and 10: "))
    secret_number = 4
    def checkmark():
        color("green")
        pensize(8)
        penup()
        left(45)
        forward(50)
        pendown()
        backward(50)
        left(90)
        forward(25)
    def down_arrow():
        penup()
        setposition(0,-25)
        pendown()
        left(90)
        forward(50)
        right(45)
        backward(25)
        forward(25)
        left(90)
        backward(25)
    def up_arrow():
        penup()
        setposition(0,25)
        pendown()
        right(90)
        forward(50)
        right(45)
        backward(25)
        forward(25)
        left(90)
        backward(25)
    while user_number != secret_number:
        user_number = int(input("Choose a number between 1 and 10: "))
    if user_number ==secret_number:
            checkmark()
    elif user_number < secret_number:
        up_arrow()
        user_number = int(input("Choose a number between 1 and 10: "))
    else:
        down_arrow()
        user_number = int(input("Choose a number between 1 and 10: "))

它应该显示向上箭头或向下箭头,具体取决于键入的数字是高于还是低于秘密数字,但它会跳过箭头并直接返回输入框。

标签: pythonturtle-graphics

解决方案


the If clauses after the while loop are not correctly indented, your while loop is just

while user_number != secret_number:
    user_number = int(input("Choose a number between 1 and 10: "))

and the only way to get out of the loop is to get the secret number correct - at which point the if statement is true, checkmark() is run and the program ends

To fix the error, just indent the if and else clauses.


推荐阅读