Мой код не дает мне ожидаемый результат в Python - PullRequest
1 голос
/ 27 сентября 2019

(в Codehs есть встроенная черепаха) Я использую 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 Ответ

1 голос
/ 27 сентября 2019

предложения If после цикла while не имеют правильного отступа, ваш цикл while просто

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

, и единственный способ выйти из цикла - получить правильный секретный номер - в какой моментоператор if равен true, запускается checkmark (), и программа завершается

Чтобы исправить ошибку, просто сделайте отступ в предложениях if и else.

...