По какой причине код ломается при запросе ввода? - PullRequest
0 голосов
/ 07 марта 2019

Привет, я новичок в Python и работаю над небольшим проектом:

Я хочу написать программу, которая предоставит информацию о высоте шара, брошенного прямо в воздух.Программа должна запросить в качестве входных данных начальную высоту h футов и начальную скорость v футов в секунду.Высота мяча через t секунд составляет h + vt - 16t2 футов.Программа должна выполнить следующие два вычисления:

(а) Определить максимальную высоту мяча.Примечание: мяч достигнет максимальной высоты через v / 32 секунды.(б) Определите приблизительно, когда мяч упадет на землю.Подсказка: вычисляйте высоту через каждые 0,1 секунды и определяйте, когда высота больше не является положительным числом.Функция с именем getInput должна использоваться для получения значений h и v, и эта функция должна вызывать функцию с именем isValid, чтобы гарантировать, что входные значения являются положительными числами.Каждое из заданий (a) и (b) должно выполняться функциями

  def getInput():
        h = int(input("Enter the initial height of the ball: "))
        v = int(input("Enter the initial velocity of the ball: "))
        isValid(h,v)

    def isValid(h,v):
        if (h<= 0):
            print("Please enter positive values")

        elif(v<= 0):
            print("Please enter positive values")

        else:
            height = maxHeight(h,v)
            print("The maximum height of the ball is", height, "feet.")
            groundTime = ballTime(h,v)
            print("The ball will hit the ground after approximately", groundTime, "seconds.")


    def maxHeight(h,v):
        t = (v/32)
        maxH = (h + (v*t) - (16*t*t))
        return maxH


    def ballTime(h,v):
        t = 0.1
        while(True):
            ballHeight = (h + (v*t) - (16*t*t))
            if (ballHeight <= 0):
                break
            else:
                t += 0.1

        return t

    getInput()

. Выходные данные, которые я желаю получить:

> Enter the initial height of the ball: 5 
> Enter the initial velocity of the ball: 34 
-The maximum height of the ball is 23.06 feet. 
-The ball will hit the ground after approximately 2.27 seconds.

1 Ответ

1 голос
/ 07 марта 2019

Похоже, вы используете IPython? Возможно, вам придется избавиться от промежутков между elif и телом if раньше. Кажется, тут же завершается интерпретация строки, вроде того, как интерпретатор Python прекратил бы интерпретацию, если бы вы вводили эти строки по одной.

 def getInput():
        h = int(input("Enter the initial height of the ball: "))
        v = int(input("Enter the initial velocity of the ball: "))
        isValid(h,v)

    def isValid(h,v):
        if (h<= 0):
            print("Please enter positive values")
        elif(v<= 0):
            print("Please enter positive values")
        else:
            height = maxHeight(h,v)
            print("The maximum height of the ball is", height, "feet.")
            groundTime = ballTime(h,v)
            print("The ball will hit the ground after approximately", groundTime, "seconds.")


    def maxHeight(h,v):
        t = (v/32)
        maxH = (h + (v*t) - (16*t*t))
        return maxH


    def ballTime(h,v):
        t = 0.1
        while(True):
            ballHeight = (h + (v*t) - (16*t*t))
            if (ballHeight <= 0):
                break
            else:
                t += 0.1
        return t

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