2014-02-13 5 views
0

Я создал сценарий для личного использования, чтобы решить уравнение физики. Я python noob, и это моя попытка использовать мои навыки и узнать больше о языке. Однако, когда я не ставил значение для переменной, мой скрипт предназначен для решения этой переменной. Это работает с каждой переменной, кроме моей переменной «accel», которая выплевывает данную ошибку в заголовке. Сценарий прерывается и выдает сообщение об ошибке в следующей строке:Python Script TypeError: объект 'int' не является вызываемым

accel = ((2(x - x0 - (v0 * t)))/(t ** 2)) 

Любая помощь будет принята с благодарностью. Сценарий квадратичной формулы, который я импортирую, не должен влиять на эту ошибку, потому что, когда я комментирую импорт, я получаю ту же ошибку, сообщите мне, должен ли я опубликовать этот код. Да, я просмотрел похожие вопросы, и они мне не помогли.

__author__ = '[PDMC] Jeteroll' 

import Quadratic_Formula 

def dist(): 

    print 'Enter the values for the following variables. Leave the variable blank for the value you wish to solve for.' 

    while True: 
     try: 
      x = float(raw_input('Value of x (final distance): ')) 
     except ValueError: 
      solve_for = 'x' 
      print 'Will solve for x' 
     break 

    while True: 
     try: 
      x0 = float(raw_input('Value of x0 (initial distance): ')) 
     except ValueError: 
      solve_for = 'x0' 
      print 'Will solve for x0' 
     break 

    while True: 
     try: 
      v0 = float(raw_input('Value of v0 (initial velocity): ')) 
     except ValueError: 
      solve_for = 'v0' 
      print 'Will solve for v0' 
     break 

    while True: 
     try: 
      t = float(raw_input('Value of t (time): ')) 
     except ValueError: 
      solve_for = 't' 
      print 'Will solve for t' 
     break 

    while True: 
     try: 
      accel = float(raw_input('Value of a (acceleration): ')) 
     except ValueError: 
      solve_for = 'accel' 
      print 'Will solve for a' 
     break 

    if solve_for == 'x': 
     x = (x0 + (v0 * t) + (.5 * accel * (t ** 2))) 
     print 'The value of x is: %s' % (round(x,2)) 

    elif solve_for == 'x0': 
     x0 = (-((v0 * t) + (.5 * accel * (t ** 2)) - x)) 
     print 'The value of x0 is: %s' % (round(x0,2)) 

    elif solve_for == 'v0': 
     v0 = ((x - x0 - (.5 * accel * (t ** 2)))/t) 
     print 'The value of v0 is: %s' % (round(v0, 2)) 

    elif solve_for == 't': 
     quad_a = (.5 * accel) 
     quad_b = (v0) 
     quad_c = (x0 - x) 
     t1, t2 = Quadratic_Formula.main(quad_a, quad_b, quad_c) 
     print 'The values of t are: %s, and %s' % (t1, t2) 

    elif solve_for == 'accel': 
     accel = ((2(x - x0 - (v0 * t)))/(t ** 2)) 
     print 'The value of v0 is: %s' % (round(accel, 2)) 

    else: 
     print 'You did not specify a variable to solve for' 

dist() 

if __name__ == '__main__': 
    dist() 
+1

Traceback где? –

ответ

3

Проблема эта линия:

accel = ((2(x - x0 - (v0 * t)))/(t ** 2)) 

Это должно быть так:

accel = ((2 * (x - x0 - (v0 * t)))/(t ** 2)) 

По существу, делая 2(...), вы просили Python искать и вызвать функцию с именем 2. Однако 2 - это число, а не функция! Естественно, все пошло.

Обратите внимание, что сообщение об ошибке дало вам подсказку о том, что было не так. Сообщение об ошибке было то, что int is not callable - это означало, что вы что-то рассматривали как функцию, которая не была фактически функцией. Оттуда было довольно легко отсканировать строки под вопросом, чтобы найти, что могло пойти не так.

+0

Да. '2 (ничего)' похоже, что вы обрабатываете число '2' как функцию (следовательно,« вызываемый »в сообщении об ошибке). Нет функции под названием '2()' ... – Floris

+0

Большое спасибо, что работало как шарм. Я все больше и больше узнаю о Python каждый день. Также благодарим Флорису за дополнительную информацию. –

1

accel = ((2(x - x0 - (v0 * t)))/(t ** 2)), вероятно, следует accel = ((2 * (x - x0 - (v0 * t)))/(t ** 2))

Смежные вопросы