Как я могу заставить этот код работать правильно? У меня есть проблемы с утверждениями if и else, и, видимо, они не имеют правильного отступа - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь создать программу, которая рассчитывает тормозной путь автомобиля, и я хочу сделать так, чтобы, если пользователь вводит замедление больше 0, программа напечатает Cannot use positive integers. Кроме того, программа имеет ошибки отступа с операторами else.

Я уже поиграл с отступом, и он ничего не исправил.

a = raw_input("How quickly is the vehicle decelerating? ")
if a > 0:
        print "cannot be a positive integer"

else a < 0: 
    s1 = (0 - float(u)**2)
    s2 = (2*float(a))
    s = s1/s2
 print "The vehicle will travel %s meters before coming to a complete stop" % (s)

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

это действительно неправильно отступ.Ваша последняя функция печати должна быть возвращена один раз, чтобы выйти за пределы иначе .Во-вторых, иначе не будет получено условие, , т.е. , если вы введете:

   if a > 5: 
    print(True) 
   else a < 5: 
    print(False)    

Вы получите следующее сообщение:

SyntaxError: invalid syntax

Два варианта решенияэто:

   if a > 5: 
    print(True) 
   else: 
    print(False) 

или

   if a > 5: 
    print(True) 
   elif a < 5: 
    print(False)    

В-третьих, поскольку ваш объект a является строкой, первое условие a> 0 будеттерпеть неудачу, если для выполнения такого сравнения a должен быть int или float ;

Наконец, raw_input не является допустимой функцией в Python3.x.Если вы переходите на более свежую версию Python, вы должны заменить ее на input () .Имея это в виду, ваш код должен выглядеть примерно так:

a = input("How quickly is the vehicle decelerating? ")
a = int(a)
if a > 0:
    print ("cannot be a positive integer")

else: 
    s1 = (0 - float(u)**2)
    s2 = (2*float(a))
    s = s1/s2
print ("The vehicle will travel %i meters per second before coming to a complete stop" % (s))

Надеюсь, это поможет

0 голосов
/ 07 апреля 2019

Вот хорошее начало для решения проблем с вашим кодом.Правильный отступ следующий:

a = raw_input("How quickly is the vehicle decelerating? ")
if a > 0:
    print("cannot be a positive integer")
elif a < 0: 
    s1 = (0 - float(u)**2)
    s2 = (2*float(a))
    s = s1/s2
    print("The vehicle will travel %s meters per second before coming to a complete stop" % (s))

Обратите внимание, что я добавил скобки в модуль print().Кроме того, я обменял вашу else на elif, так как требуется еще if, если вы хотите подготовить его.

Вот еще несколько советов, которые следует учитывать: 1) Попробуйте скопировать и вставить сообщение об ошибке вместе со своим сообщением.Вы обнаружите, что обучение чтению ошибок принесет вам большую пользу.Не стесняйтесь комментировать их к этому ответу для дальнейшего руководства.2) Если вы используете Python 3. *, raw_input() не рекомендуется.У freecodecamp.com есть замечательная монра: «Читайте, ищите, спрашивайте» в этом порядке.3) raw_input(), или, по крайней мере, версия Python3, которую я использовал, вернет вам символ.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...