2015-09-23 2 views
-5

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

import math 

def compute_height_rectangle(width,diagonal): 
    height=area/diagonal 
    return height 

height = int(input("Please enter the length of the diagonal: ")) 
"height = int(height) " 
width = int(input("please enter the width: ")) 
"diagonal = width" 

def compute_area_rectangle(width,diagonal): 
    area=height*width 
    return area 

print(compute_area_rectangle(width,diagonal)) 
+2

Возможно, вы захотите очистить свои переменные при обмене между «высотой» и «диагональю» по всему коду. Это делает его запутанным относительно того, что вы на самом деле имели в виду. Начните с начала и выпишите на бумаге каждый шаг, который вы хотите предпринять, чтобы вычислить область. Затем преобразуйте этот поток в код. Попытайтесь организовать свой def в одном месте, а не повсюду, поскольку это поможет с удобочитаемостью – scrappedcola

ответ

1

Используя Pythagoras' Theorem, мы замечаем, что:

diagonal^2 = height^2 + width^2 (not python code)

зная, что диагональ всегда больше, чем высота, мы имеем:

height = sqrt(diagonal^2 - width^2)

Так код вы хотите:

def compute_height_rectangle(width, diagonal): 
    return (diagonal ** 2 - width ** 2) ** 0.5 

def compute_area_rectangle(width, diaognal): 
    return width * compute_height_rectangle(width, diagonal) 
0

Диагональ никогда не определяется, потому что у вас есть

"diagonal = width" 

в двойных кавычках, что делает это просто строка. Я скопировал ваш код и удалил двойные кавычки, и он не вызвал ошибку. Я бы также удалил:

"height = int(height)" 

line, потому что нет необходимости назначать высоту как целочисленный ввод.

Для будущих вопросов это поможет, если вы сообщите нам, что вы пытались сделать, чтобы ваш код делал, поэтому мы можем обнаружить и любые другие ошибки, и это может просто сэкономить вам какое-то усилие :).

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