Forum >> Principianti >> Semplificare condizione valore compreso tra

Pagina: 1

Buongiorno a tutti! Sono alle prime armi (ho qualche base di basic che usavo nel 1986 :D) ed ora sto cercando di ottenere un risultato diverso in funzione del valore compreso tra due numeri. Il codice è questo :
while True:
	vout =round(adc.value*3.3,2)*100

	if vout>=40 and vout<=49:
	    angles = 0.0
        if vout>=131 and vout<=150:
            angles = 22.5
        if vout>=120 and vout<=130:
            angles = 45.0
 	if vout>=277 and vout<=284:
            angles = 67.5
   	if vout>=268 and vout<=276:
            angles = 90.0
    	if vout>=285 and vout<=294:
            angles = 112.5
     	if vout>=227 and vout<=234:
            angles = 135.0
        if vout>=255 and vout<=262:
            angles = 157.5
    	if vout>=183 and vout<=190:
            angles = 180.0
... e la lista va avanti fino a 337.5.

La domanda è : esiste un modo per semplificare il tutto (non troppo complesso, per carità)

Grazie a chi potrà rispondermi

p.s.: uso python 2.7


--- Ultima modifica di polbob in data 2019-11-02 11:13:26 ---
Ma non ho capito... li metti in ordine sparso così, perché vuoi complicare un po' di più la vita di chi legge il tuo codice?


Comunque ci sono diverse possibilità per problemi del genere... un'idea potrebbe essere mettere gli estremi superiori degli intervalli ORDINATI in una lista e iterarci sopra fino a sbattere in quello giusto..

tipo, invece di avere, per esempio
def select(val):
  if val>0 and val<10: 
    ret = 5
  elif val>10 and val<20: 
    ret = 15
  elif val>20 and val<30: 
    ret = 25
  return ret
avere:
def select(val):
  bounds = [0, 10, 20, 30]
  results = [5, 15, 25]
  ret = 5
  for n, b in enumerate(bounds):
    if val<b:
      return ret
    ret = results[n]
(con un po' più sofisticherie per il controllo degli errori, etc.)




> p.s.: uso python 2.7

NON usare python 2.7. Python 2.7 è abandonware, dimenticalo. Non si deve più usare. Usare Python 2.7 per imparare, poi, è veramente assurdo.





--- Ultima modifica di RicPol in data 2019-11-02 23:03:49 ---
Grazie, sono in ordine sparso perché sono i valori che mi restituisce un sensore collegato ad un adc 3008 collegato ad un raspberry e sono in "ordine" di rotazione, cioè ruotando questo sensore le tensioni che mi da sono quelle da 0 gradi a 360 in senso orario. Python 2.7 devo usarlo perché sto utilizzando una distro (openplotter) che attualmente ha quella versione. Comunque grazie, ora mi studio un po' le indicazioni che mi hai dato e provo
terrificante. Mah, almeno vedo che stanno lavorando a una versione 2 che passa a python 3... ma vedo anche che è a meno di metà del lavoro... https://github.com/sailoog/openplotter/projects/4#card-24257809
Si esatto, per quello preferisco per ora tenere la versione testata e funzionante. In ogni caso credo che la filosofia di Python 2 sia uguale al 3 se non per nuove funzionalità, o sbaglio?


Pagina: 1



Esegui il login per scrivere una risposta.