Software Development for Dummies

Cosa non ti è chiaro del ciclo? In Python puoi looppare qualsiasi oggetto che sia iterabile (tra l'altro in Python c'è proprio il concetto di iteratore, che è molto comodo da usare).
Solo il for non mi è abbastanza chiaro la sintassi. Infatti lessi su un'altro forum che effettivamente il for su Python è un po' strano rispetto agli altri linguaggi ??‍♂️
 
QUesto e' un esempio lampante dei pro e contro di python.
La list comprehension puo' essere lentissima ma ti permette concettualmente e visivamente di compattare il codice in maniera bestiale. Se quel numero e' grande quell'operazione e' mostruosa, ma allo stesso tempo se uno legge il codice capisce subito cosa succede.
Te hai fatto l'uni, io no ?

In Python mi sono fermato alle liste ?

Adesso sto studiando il C per un semplice obiettivo: Arduino.
 

piotor

Pallone d'oro
  Moderatore
Solo il for non mi è abbastanza chiaro la sintassi. Infatti lessi su un'altro forum che effettivamente il for su Python è un po' strano rispetto agli altri linguaggi ??‍♂️
Si la differenza e' che in python non fai un loop sugli indici, ma proprio sugli elementi se l'oggetto su cui loop e' iterable.
Puoi looppare una lista, un dizionario, un set, una lista di liste, un array. Sicuramente e' diverso rispetto al loop incrementale di c, ma concettualmente lo trovo piu' immediato, anche perche' nulla ti vieta di ricrare il loop a indici in python in teoria.
 
Si la differenza e' che in python non fai un loop sugli indici, ma proprio sugli elementi se l'oggetto su cui loop e' iterable.
Puoi looppare una lista, un dizionario, un set, una lista di liste, un array. Sicuramente e' diverso rispetto al loop incrementale di c, ma concettualmente lo trovo piu' immediato, anche perche' nulla ti vieta di ricrare il loop a indici in python in teoria.
Ad esempio feci un algoritmo tabellina su Python con il ciclo for, lo feci con molta fatica.
Non parliamo dell'algoritmo dove bisogna rovesciare una stringa, ad es. da "Ciro" passi a "Oric", in questo caso so' diventato pazzo ?
 

piotor

Pallone d'oro
  Moderatore
Ad esempio feci un algoritmo tabellina su Python con il ciclo for, lo feci con molta fatica.
Non parliamo dell'algoritmo dove bisogna rovesciare una stringa, ad es. da "Ciro" passi a "Oric", in questo caso so' diventato pazzo ?
E la cosa **** e' che in python puoi looppare pure una stringa,perche' la stringa stessa e' iterabile.

Codice:
s = "!adreM naliM"
nuova_string = ""
for lettera in s:
    nuova_string = lettera + nuova_string

Poi come sempre la soluzione pitonica, se puoi looppare la stringa, la puoi anche invertire direttamente...
Codice:
nuova_string = s[::-1] #questo inverte una stringa

Entrambi sputano fuori

Milan *****!
 

piotor

Pallone d'oro
  Moderatore
Scusa ma cos'è quel (s[::-1])? ?
Python usa la slice notation, che permette di accedere agli elementi di liste/array.

Codice:
a[start:stop]  # elementi da start a stop-1
a[start:]      # tutti glie lementi da start in poi
a[:stop]       # tutti gli elementi fino a  stop-1
a[:]           # tutti gli elementi

di fatto generalizzando il concetto di indice (a[0] ti ritorna il primo elemento)

Puoi pero' anche usaer strutture piu' complesso andando all'indeitro se caso:

Codice:
a[-1]    # ultimo elemento
a[-2:]   # ultimi due elementi
a[:-2]   # tutto tranne gli ultimi due elementi

In questo modo non devi sapere la lunghezza della lista se sai ceh devi giusto segare l'ultimo elemento, per esempio.

Poi c'e' la versione super generalizzata:

a[start:stop:step]

dove vai da start a stop-1 a step, che di fatto e' esattamente il loop di c, praticamente, solo che python fa tutto da solo.

Codice:
a= [1,2,3,4,5]
print(a[0:5:2])
print(a[::2])

Il risultato e' [1,3,5] in entrambi i casi (con il vantaggio che non devi sapere prima quanto e' lunga la lista!)

Nulla ti vieta di andare al contrario, quindi se usi la notazione a[::-1] ti ritorna tutta la lista, ma rinculando. Nel caso sopra avresti [5,4,3,2,1].
 
Python usa la slice notation, che permette di accedere agli elementi di liste/array.

Codice:
a[start:stop]  # elementi da start a stop-1
a[start:]      # tutti glie lementi da start in poi
a[:stop]       # tutti gli elementi fino a  stop-1
a[:]           # tutti gli elementi

di fatto generalizzando il concetto di indice (a[0] ti ritorna il primo elemento)

Puoi pero' anche usaer strutture piu' complesso andando all'indeitro se caso:

Codice:
a[-1]    # ultimo elemento
a[-2:]   # ultimi due elementi
a[:-2]   # tutto tranne gli ultimi due elementi

In questo modo non devi sapere la lunghezza della lista se sai ceh devi giusto segare l'ultimo elemento, per esempio.

Poi c'e' la versione super generalizzata:

a[start:stop:step]

dove vai da start a stop-1 a step, che di fatto e' esattamente il loop di c, praticamente, solo che python fa tutto da solo.

Codice:
a= [1,2,3,4,5]
print(a[0:5:2])
print(a[::2])

Il risultato e' [1,3,5] in entrambi i casi (con il vantaggio che non devi sapere prima quanto e' lunga la lista!)

Nulla ti vieta di andare al contrario, quindi se usi la notazione a[::-1] ti ritorna tutta la lista, ma rinculando. Nel caso sopra avresti [5,4,3,2,1].
Ora mi è tutto abbastanza chiaro ?

Una domanda: Ma hai studiato solo il Python oppure altri linguaggi?
 
Alto