Commit 65d71f78 by Patryk Czarnik

geometria - wersja z wyjątkami

parent 83e17238
...@@ -25,6 +25,8 @@ def poprawny_trojkat(a, b, c): ...@@ -25,6 +25,8 @@ def poprawny_trojkat(a, b, c):
return a < b + c and b < a + c and c < a + b return a < b + c and b < a + c and c < a + b
def pole_trojkata(a, b, c): def pole_trojkata(a, b, c):
if not poprawny_trojkat(a, b, c):
raise ValueError(f'Z boków {a} {b} {c} nie da się ułożyć trójkąta!')
p = (a + b + c) / 2 p = (a + b + c) / 2
return math.sqrt(p*(p-a)*(p-b)*(p-c)) return math.sqrt(p*(p-a)*(p-b)*(p-c))
......
from geometria import * from geometria import *
tekst_menu = '''Wybierz rodzaj figury: tekst_menu = '''\nWybierz rodzaj figury:
* K - kwadrat * K - kwadrat
* P - prostokąt * P - prostokąt
* O - koło * O - koło
......
from geometria import *
tekst_menu = '''\nWybierz rodzaj figury:
* K - kwadrat
* P - prostokąt
* O - koło
* T - trójkąt
* Q - wyjście z programu'''
while True:
print(tekst_menu)
wybor = input('Twój wybór: ').upper()
try:
if wybor == 'Q':
break
elif wybor == 'K':
a = float(input('Podaj długość boku: '))
pole = pole_kwadratu(a)
obw = obwod_kwadratu(a)
print(f'Kwadrat o boku {a} ma pole {pole} oraz obwód {obw}')
elif wybor == 'P':
a = float(input('Podaj długość pierwszego boku: '))
b = float(input('Podaj długość drugiego boku: '))
pole = pole_prostokata(a, b)
obw = obwod_prostokata(a, b)
print(f'Prostokąt o bokach {a} i {b} ma pole {pole} oraz obwód {obw}')
elif wybor == 'O':
r = float(input('Podaj promień: '))
pole = pole_kola(r)
obw = obwod_kola(r)
print(f'Koło o promieniu {r} ma pole {pole} oraz obwód {obw}')
elif wybor == 'T':
a = float(input('Podaj bok a: '))
b = float(input('Podaj bok b: '))
c = float(input('Podaj bok c: '))
pole = pole_trojkata(a, b, c)
obw = obwod_trojkata(a, b, c)
print(f'Tójkąt o bokach {a} {b} {c} ma pole {pole} oraz obwód {obw}')
else:
print('Niepoprawny wybór')
except Exception as e:
print('Wystąpił jakiś błąd:', e)
print('Do widzenia')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment