Я пытаюсь создать программу, которая вычисляет тормозной путь автомобиля, и я хочу сделать так, чтобы, если пользователь вводит замедление больше 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)
он возвращает строку, поэтому вы должны преобразовать ввод в целое число или число с плавающей запятой, используя int (a) или float (a), например. если int(a)>0:
вы можете проверить тип любой переменной с помощью функции type(), поэтому, если вы напишете print(type(a)) , вы увидите, что это 'str', сокращение от string.
это действительно неправильно отступ. Ваша последняя функция печати должна быть удалена один раз, чтобы выйти за пределы еще. Во-вторых, else не получит условие то есть, если вы наберете:
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)
В-третьих, поскольку ваш объект а является строкой, первое условие а > 0 не будет выполнено, поскольку для выполнения такого сравнения а должен быть инт или плавать;
Наконец, raw_input не является допустимой функцией в Python 3.x. Если вы переходите на более позднюю версию Python, вы должны заменить ее просто Вход (). Имея это в виду, ваш код должен выглядеть примерно так:
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))
Надеюсь, поможет
Если они в Python 3, то print x
, а не print(x)
также будет проблемой.
Вот хорошее начало для решения проблем с вашим кодом. Правильный отступ следующий:
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, которую я использовал, даст вам возврат char.
Удачи!
@MarcinOrlowski Откуда вы взяли, что это Python 2?
@Acccumulation Он ОП, и он никогда не говорил, что это python2. Странный ответ, потому что я просто был полезен. Корень проблемы в том, что он делает много ошибок и пришел сюда для обучения новичков. Я думал, что угожу его, несмотря на культуру этого сайта, которая скорее прогонит его за то, что он спросил, не попробовав сначала все очевидные альтернативы.
Если я не ошибаюсь, pythonstudent23 — это OP, и MarcinOrlowshi только что отредактировал его.
@MarcinOrlowski Я исправил не только скобки. Я также сказал: «Если вы используете python 3. раскрыть больше, если ему это нужно. Более того, я только что протестировал свой код без импорта и использования print()
со скобками на python 2.7.15. Все еще работает как шарм. Я могу показать это вам, когда ОП будет выполнен с этим уроком по устранению неполадок.
Какой тип данных возвращает
raw_input
?