我的代码没有给我期望的Python结果

时间:2019-09-27 04:00:48

标签: python turtle-graphics

(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: "))

根据键入的数字是高于还是低于密码,它应该显示向上箭头或向下箭头,但是它会跳过箭头,而直接返回到输入框。

1 个答案:

答案 0 :(得分:1)

while循环后的If子句没有正确缩进,您的while循环只是

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

摆脱循环的唯一方法是正确设置密码-此时if语句为true,运行checkmark()并结束程序

要解决该错误,只需缩进if和else子句。