2017-09-16 4 views
1

IVE die E1- und E2-Code-Abschnitte auf Basis als zwei Hälften der Google-Gleichung, wenn calculate width of a rectangle given perimeter and area fragen.Berechnet die Breite eines Rechtecks ​​der Fläche gegeben und Umfang

Dieser Codeabschnitt ist Teil eines größeren Stücks, das das berechnete Rechteck in einer visuellen Form anstelle von Ganzzahlen anzeigt. Wenn ich es jedoch teste, ist die Antwort falsch.

import math 

print("Welcome to Rectangles! Please dont use decimals!") 

area = int(input("What is the area? ")) 

perim = int(input("What is the perimeter? ")) 

e1 = int((perim/4) + .25) 
e2 = int(perim**2 - (16 * area)) 
e3 = int(math.sqrt(e2)) 

width = int(e1 * e3) 
print(width) 

 

+2

könnten Sie einen Eingang und erwartete Ausgabe geben –

+0

@KalyanReddy Ive die Post aktualisiert etwas zu klären, aber sagen, dass id 100 als ein Bereich eingeben und 40 als ein Umfang ist das Ergebnis 0. eine Fläche von 12 Ein- und Umfang von 16 würde 32 zurückgeben. –

+1

Sie teilen Umfang durch 4 ... So, 4 gleiche Seiten sind ein Quadrat. Jede Seite ist also die Breite. Warum macht '+ .25' genau das für dich? Warum gibt es eine zufällige "16"? –

Antwort

2

Es Sie besser Ihre Variablen nennen empfohlen wird, damit wir wissen, was Sie zu berechnen versuchen.

Von der Google-Formel sollten Sie es einfach direkt übersetzen.

import math 

def get_width(P, A): 
    _sqrt = math.sqrt(P**2 - 16*A) 
    width_plus = 0.25*(P + _sqrt) 
    width_minus = 0.25*(P - _sqrt) 
    return width_minus, width_plus 

print(get_width(16, 12)) # (2.0, 6.0) 
print(get_width(100, 40)) # (0.8132267551043526, 49.18677324489565) 

Sie erhalten Null, da int(0.8132267551043526) == 0

Wichtiger Hinweis: Ihre calcuation nicht

area <= (perim**2)/16 
+0

Wow danke, ich gehe davon aus, dass der Scheck Ergebnisse verhindert, die keinen Sinn ergeben würden? –

+0

Korrekt. Sie können die Quadratwurzel einer negativen Zahl nicht verwenden –

1
import math 

print("Welcome to Rectangles! Please dont use decimals!") 

area = int(input("What is the area? ")) 

perim = int(input("What is the perimeter? ")) 

e1 = int((perim/4) + .25) 
e2 = abs(perim**2 - (16 * area)) 
e3 = math.sqrt(e2) 

width = e1 * e3 
print(width) 
+0

Was hast du genau verändert? –

+0

@ cricket_007 aktualisiert – Serjik

2

Hier überprüft der feste Code:

import math 

print("Welcome to Rectangles! Please dont use decimals!") 
S = int(input("Area ")) 
P = int(input("Perim ")) 
b = (math.sqrt (P**2-16*S)+P) /4 
a = P/2-b 
print (a,b) 
2

Wenn Sie nicht tun Um diese Gleichung konkret zu verwenden, wäre es einfacher, sie einfach zu erzwingen.

import math 

print("Welcome to Rectangles! Please dont use decimals!") 

area = int(input("What is the area? ")) 

perim = int(input("What is the perimeter? ")) 

lengths = range(math.ceil(perim/4), perim/2) 

for l in lengths: 
    if l*(perim/2 - l) == area: 
     print(l) 
Verwandte Themen