Поскольку цикл не возвращает правильную сумму и незначительные проблемы с моим кодом - PullRequest
0 голосов
/ 28 сентября 2018
while True:
n = int(input('Enter a positive number under 10000(0 to quit):'))

if n >= 10000:       print('Number entered is too high, it must be under 10000.') 

elif n == 0:
    print('Closing programm.')
    break

else:
    width_rectangle = 1/n      



    for rectangle in range(n):
        x_left = rectangle * width_rectangle
        x_right = (rectangle * width_rectangle) + width_rectangle   

        y_left = x_left**3 + 1
        y_right = x_right**3 + 1    



        ###My problem is in the following code:

        height = y_left + y_right / 2
        area = height * width_rectangle**`

Этот код работает отлично, за исключением части после y_right и y_left.Я хочу найти общую площадь для n и n = мое количество прямоугольников.Итак, мой вопрос: как мне распечатать только сумму всей области, а не печатать все, что обычно печатает цикл for?Кроме того, я знаю, что мой код работает, но что-то не так с моим кодом высоты и области, потому что он не дает правильного ответа, и когда я делаю это на бумаге, он работает.

уравнение, с которым у меня возникли проблемы: - высота = y_left + y_right / 2 и площадь = высота * width_rectangle

Что я пробовал до сих пор: - Добавление секунды для цикла, не даломне правильную сумму - я попытался поместить свой отпечаток вне цикла, потому что я видел, что он даст мне только последнюю итерацию моего цикла, это не сработало, потому что моя переменная была вне диапазона

Позвольте мне знать, если вытребуется больше информации.

1 Ответ

0 голосов
/ 28 сентября 2018

Прежде всего, порядок операций.Линия

height = y_left + y_right / 2

, вероятно, должна быть

height = (y_left + y_right) / 2

, если вы пытаетесь найти среднее значение y_left и y_right.В конце концов, деление происходит до сложения.

После этого вы вычисляете площадь, но вы не ничего не делаете с ней .Вам нужно объявить переменную до , когда цикл запускается вне цикла, и использовать ее для хранения области на каждой итерации.

По сути, это означает, что перед циклом for добавьтестроку

area_sum = 0

, а затем добавьте строку в самом конце цикла for, сразу после той, где вы вычисляете площадь:

area_sum += area   # add the area for this rectangle to the sum of areas of all rectangles

После чего вы можете напечатать area_sum и это должно быть то, что вы хотите.Раньше вы получали ошибку вне области видимости, потому что объявленная вами переменная была заблокирована в «области», в которой она была создана - в цикле for.Объявляя эту переменную за пределами для for_loop, вместо нее вы сможете печатать ее и вне цикла for.

...