Perché non posso modificare la variabile del ciclo 'for' in Python?
Una cosa che un programmatore deve imparare è che ci sono molti strumenti diversi che realizzano compiti simili ma in modi diversi. In questo caso il tuo obiettivo e il metodo che stai usando non sono completamente compatibili. C'è probabilmente un modo per forzare il codice a fare quello che vuoi in un ciclo for, ma ci sono metodi migliori per realizzare il tuo compito.
Sembra che quello che stai cercando sia un ciclo che inizia da zero e conta fino a 10 per 2s. Hai ragione, range è fondamentalmente creare una lista di tutti i numeri tra 0 e 10 (non inclusi). Questo significa che se tu dovessi stampare la lista generata da range(0, 10) otterresti [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]. Quello che il vostro ciclo for sta facendo è scorrere la lista un elemento alla volta e memorizzare temporaneamente quel valore in una variabile chiamata x.
Per il primo passo del ciclo X = 0. Quindi lo stampate sullo schermo. Poi si imposta x = x + 2 ora x = 2. Poi saltate indietro all'inizio del ciclo. Non avete ancora raggiunto la fine della lista, quindi create una variabile chiamata x e memorizzate 1 in essa. Questo sovrascrive il cambiamento che avete fatto facendo x = x + 2. Così quando stampate x ottenete un valore che non vi aspettate. Questo è ciò che è noto come un bug/errore logico. Il vostro codice usa la sintassi corretta ma vi dà un risultato inaspettato.
La funzione range ha un argomento opzionale che potreste facilmente usare per far agire il vostro codice come previsto. L'argomento opzionale vi permette di fare passi di qualsiasi dimensione vogliate mentre contate dal numero iniziale a quello finale. Per usarlo potreste digitare range(0, 15, 5)
Se doveste stampare quella lista otterreste [0, 5, 10] la ragione per cui non vedete 15 è che il punto di arresto non è incluso nella lista. Se lo cambiassimo in print range(0,16,5) otterremmo [0, 5, 10, 15].
Viste le tue nuove conoscenze dovresti essere in grado di modificare il tuo ciclo for per fare ciò che vuoi. Un compito simile potrebbe essere realizzato anche con un ciclo while. Come per quasi tutte le cose della programmazione, c'è più di una risposta al vostro problema. Parte della battaglia è scegliere lo strumento corretto per il compito da svolgere. In definitiva penso che un ciclo while sia più adatto al vostro compito.
Articoli simili
- Come chiamare una variabile da un'altra funzione in Python
- Come restituire un nome di variabile in Python (ad esempio, b = 3, voglio stampare b come str)
- Come ottenere il valore di una variabile da una classe ad un'altra classe in Python
- Come modificare un'email già inviata per modificare qualcosa pronto da ripetere o inviare a qualcun altro