Delta negativo - Esercizio 5

Tommaso.Lopedote (1340 points)
3 9 24
asked Oct 10, 2020 in Programmare in Python by Tommaso.Lopedote (1,340 points)
closed Oct 11, 2020 by andrea.sterbini

Buona sera, riguardo l'esercizio assegnato dal Prof. Spognardi

  1. Scrivere uno script python che prende in input tre float a, b, c, e calcola e stampa le due radici x dell'equazione: CodeCogsEqn1.gif

Premetto che non ho mai avuto esperienza di programmazione fino all'inizio di questo semestre, di conseguenza ho provato a risolvere l'esercizio in modo artigenale, usando l'aritmetica. Quindi mi chiedevo se ci fosse un modo per impartire una condizione a Python riguardando il Delta della formula risolutiva (poiche' i valori non sono pre-inseriti ma lo script attendera' l'inserimento degli stessi da parte dell'utente) dell'equazione di secondo grado, dato che per delta minore di zero non ci sono zeri che risolvono l'equazione, ho pensato che fosse necessario impartire una condizione simile al dire:

Se Delta= valore minore di zero 

mostra messaggio "per ogni x appartenente ad R".

Poiche' la parabola si trova al di sopra o al di sotto dell'asse delle ordinate la risoluzione della equazione non restituisce alcuna intersezione.

420 views
closed with note: risolto

2 Answers

Alessio Natalucci (3660 points)
5 10 23
answered Oct 10, 2020 by Alessio Natalucci (3,660 points)
edited Oct 10, 2020 by Alessio Natalucci

Per questo caso la cosa migliore è utilizzare la formula dell'if, elif, else (che ancora dobbiamo vedere a lezione), in Python è strutturata in questo modo (non son sicuro sia scambio di codice, in tal caso mi scuso in anticipo):
 

if expression1:
   statement(s)
elif expression2:
   statement(s)
elif expression3:
   statement(s)
else:
   statement(s)

[L'identazione (il lasciare lo spazio) è fondamentale in python]

Nel caso delle equazioni di secondo grado ci sono tre possibili situazioni, ovvero il delta maggiore, minore o uguale a zero. Utilizzando questa formula puoi stampare tre diversi output in base ai parametri inseriti in partenza.

Se ti vuoi portare avanti e iniziare a dare un occhiata qui puoi trovare altre informazioni:

Link

Tommaso.Lopedote (1340 points)
3 9 24
commented Oct 10, 2020 by Tommaso.Lopedote (1,340 points)
Grazie, ho risolto come volevo.
SimoneBd96 (3030 points)
5 11 33
answered Oct 11, 2020 by SimoneBd96 (3,030 points)
Per quanto riguarda questa soluzione se non vuoi complicarti troppo la vita (non so se può essere una soluzione elegante), io ho scritto la formula del delta, il caso delta <0 lo gestisce python che restituisce un messaggio di errore, cioè:

Traceback (most recent call last):

ValueError: math domain error
G
Giuseppe01 (1500 points)
0 0 10
commented Oct 11, 2020 by Giuseppe01 (1,500 points)

Non credo che lasciare che il programma generi un errore sia una buona idea perché in realtà, anche se l'interpreter mostra quel messaggio, non hai un dato di qualche tipo da restituire all'utente. Ciò che ottieni è un programma che va in errore e un utente che si ritrova con un messaggio "incomprensibile". Casi di errore prevedili andrebbero evitati facendo gli opportuni controlli, come suggerito nella precedente risposta, così da generare un output che abbia senso (ad esempio il messaggio L'equazione non ha soluzioni nei Reali).

Loriv3 (7970 points)
8 20 84
commented Oct 13, 2020 by Loriv3 (7,970 points)
Basta calcolare il delta solo come b^2 - 4ac, calcolerai la radice quadrata poi solo nel caso di delta>0 così non darà alcun errore