Как заставить его узнать меня?
Я пытаюсь отформатировать вывод для этого вычисления, но он продолжает давать мне ошибку для строки, где я форматирую i, говоря, что я не определен, я предполагаю, что это как-то связано с тем, что я использую в определении, но я не совсем уверен, а также не уверен, как заставить его распознать его.
Там может быть проблема с моим n, я пытаюсь заставить его удваиваться каждый раз в диапазоне до 512, так что не уверен, что это проблема, но я также работаю над тем, чтобы понять это, и не уверен, что это влияет на меня
Что я уже пробовал:
Перед этим есть еще какой-то код, который просто вводится и определяет больше определений, но я не думаю, что он имеет отношение к этой проблеме.
def my_trap(a,b,n): sum= 0 h= (b-a)/n #width of each interval for i in range(1,n+1): x=a+i*h sum=sum+2*f(x) return (h/2)*(sum+f(a)+f(b)) print('\nThis programme estimates the integral of the function sin(x) in the \ integral [a,b] using the trapezoidal method.') a=getinput('a') b=getinput('b') n=512/2 n=n*2 error= analytical(a,b)-my_trap(a,b,n) print('{0:<20}'.format(i),'|'\ '{0:<20.5f}'.format(my_trap(a,b,n)), '|', \ '{0:<20.5f}'.format(error))
Richard MacCutchan
Оператор return в my_trap имеет неверный отступ.
CiaraMc96
Спасибо, исправил это сейчас, но он все еще не распознает меня, как мне сделать его доступным в другом месте с тем, что сказал Фил?
phil.o
i
будучи доступным и назначенным только внутри цикла, вы должны создать другую переменную в области, которую хотите использовать. Затем в цикле назначьте значение i
к этой более широкой переменной. Но: вы сможете получить только последний стоимость i
, если только у вас нет механизма для раннего выхода из цикла. Если вы не выйдете из цикла раньше, то можете принять последнее значение i
всегда будет оставаться n
.