Forum >> Principianti >> funzione range?

Pagina: 1

Buonasera,




non avendo un'esempio sul mio manuale, mi viene spiegato semplicemente cosa fa la funzione range.




Da quel che ho capito se io scrivo range10 acquisisce tutti gli elementi compresi tra 0 a 9.




Se provo ad eseguire un programmino fatto da me non mi funziona(e ovviamente so già che sbaglio qualcosa).




Mi potete fare un esempio semplice e funzionante su un programmino fatto con range?




Altra cosa che non ho capito..




Se io scrivo range[1,10,2] perché dovrebbe stampare questi numeri? [1,3,5,7,9] il mio manuale dice che è così, ma non ne capisco il motivo..



non avendo un'esempio sul mio manuale, mi viene spiegato semplicemente cosa fa la funzione range.
Cos'è "il tuo manuale"?

Da quel che ho capito se io scrivo range10 acquisisce tutti gli elementi compresi tra 0 a 9.

È range(10), con le parentesi tonde, non quadre. E, cosa significa "acquisisce"?

Se provo ad eseguire un programmino fatto da me non mi funziona(e ovviamente so già che sbaglio qualcosa).

Ci fai vedere il tuo codice?

Mi potete fare un esempio semplice e funzionante su un programmino fatto con range?

>>> for i in range(1, 10, 2): print(i)
... 
1
3
5
7
9

Altra cosa che non ho capito..
Se io scrivo range[1,10,2] perché dovrebbe stampare questi numeri? [1,3,5,7,9] il mio manuale dice che è così, ma non ne capisco il motivo..

Prova a variare i tre numeri, e vediamo se ci arrivi da solo... :P



THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Il manuale è per la versione 2.5, ho scaricato la versione 3.6 credendo che non cambiasse tantissimo, ma in molte cose non mi stavo trovando (tipo il fatto che sia stato eliminato raw_input, oppure il fatto che dopo print ciò che voglio stampare vada tra parentesi).

Riguardo al termine che ho usato "acquisire" ho sbagliato.. non mi veniva il termine.. proverò a dire "leggere" sperando che lo azzecchi.

Non badare ai termini che uso, perché a me non interessa essere "tecnico". A me interessa per lo più capire a piccoli passi il funzionamento di questo linguaggio di programmazione.

Siccome non mastico l'informatica in generale mi sono munito di questo manuale "per bambini".

Quindi se il mio manuale paragona le variabili con dei valori a delle scatole con dei contenuti... non farci caso se anziché variabili io possa dire scatole :)




Ho letto meglio.. Ti confermo il fatto che range in questo manuale viene messo tra parentesi quadre (infatti range fa parte del capitolo intitolato liste speciali, e sul mio manuale le liste si fanno tra parentesi quadre).
Nomi=["Andrea","Jacopo","Luca","Stefano"]
print(Nomi2)




(e mi stampa il nome di Luca)


Ho letto meglio ciò che dice il manuale, dice che: il terzo indice si chiama "passo" e dice con quale intervallo leggere i numeri. Quindi scrivendo range[1,10,2] mi legge i numeri dispari, perché partendo da 1 mi deve leggere ogni due numeri.




Riguardo l'esempio che hai fatto.. Ancora non sono arrivato al capitolo su for, viene dopo questo capitolo e quello sulle liste annidate.




Giusto per capire e portarmi un po' avanti, ma range va inserito per forza in un ciclo?





--- Ultima modifica di harimau08 in data 2016-10-06 22:42:39 ---


--- Ultima modifica di harimau08 in data 2016-10-06 22:48:39 ---
Sono molto curioso, che manuale stai leggendo?
Il manuale è questo in allegato.




Vorrei mettere subito le mani avanti dicendo che leggendolo "alla svelta", è molto probabile che io non abbia capito o abbia frainteso molti dei contenuti di questo manuale.




(infatti alla minima difficoltà vengo in questo forum a far domande per ulteriori semplificazioni).




Valutando il fatto che ho la terza media, e che non vado a scuola da 10 anni..




Credo che il mio livello d'attenzione non sia tanto diverso dai soggetti a cui è indirizzato il manuale (cioè ai ragazzini).




Il capitolo sulle liste speciali (con l'accenno a range) inizia da pagina 104 e come si può notare in questo capitolo.. non c'è un esempio di un programma il cui sia usato range.




Ma solo la definizione, il suo scopo e il fatto che se io scrivo range 10 mi stampa consecutivamente i numeri da 0 a 9.




Se poi un esempio di range lo troverò nei prossimi capitoli questo è un altro discorso, ancora non ci sono arrivato.




Ripeto la domanda...Ma alla fine range per funzionare deve per forza stare in un ciclo?












Mi permetto di suggerirti di abbandonare quel manuale, è troppo datato.

Ti lascio alcuni link, valuta di passare ad uno di questi.

Libri cartacei (Italiano)
Python di Marco Beri [Guida tascabile, ottima per immergerti subito nel linguaggio]
Imparare Python di Mark Lutz [La storia dell'insegnamento di Python]
Programmare con Python - Guida completa di Marco Buttu [Ottimo testo]
Programmare in Python di Kenneth A. Lambert

Libri digitali (Italiano)

Pensare in Python di Allen B. Downey
Immersione in Python 3 di Mark Pilgrim

Libri cartacei (Inglese)
Nota: Ovviamente esistono molte delle versioni elencate in italiano.
Learning Python 5th edition di Mark Lutz [Versione aggiornata di Imparare Python]
Python Cookbook di David Beazley e Brian K. Jones [Fuori concorso perché non è una guida per principianti, ma è essenziale su ogni scrivania di un programmatore Python]

Libri digitali (Inglese)
Learn Python the Hard Way di Zed Shaw [Video e tutorial, con risorse anche a pagamento]
Think Python di Allen B. Downey
Invent with Python di Albert Sweigart [Non solo un libro, ma ben quattro]



--- Ultima modifica di Daniele aka Palmux in data 2016-10-07 15:04:11 ---
Farò come hai detto, mi mancano solo 8 pagine per terminare tutto ciò che mi interessa (l'ultimo modulo su pygame non mi interessa).




Poi passerò ad aggiornarmi ad uno dei manuali che mi hai suggerito.




Grazie per il consiglio :ok:
Quindi se il mio manuale paragona le variabili con dei valori a delle scatole con dei contenuti... non farci caso se anziché variabili io possa dire scatole :)
....
Giusto per capire e portarmi un po' avanti, ma range va inserito per forza in un ciclo?
Le variabili intese come scatole, in Python sono un po' fuorvianti (in altri linguaggi no), anche se come primissima approssimazione le "scatole" sono le cose più facilmente rappresentabili nella mente, e allora vada l'approssimazione visto il "target" di quel corso. Ma appena fai qualcosa come questa il paragone con le scatole crolla miseramente:
>>> a = [1, 2, 3]
>>> b = a
>>> b[ 0 ] = 99
>>> print(b)
[99, 2, 3]
>>> print(a)
[99, 2, 3]

print, input e range sono alcune delle cose cambiate tra Py2 e Py3:

In Py3 print è diventata una funzione invece di una (anomala) istruzione
In Py3 input equivale a raw_input di Py2
In Py3 range equivale a xrange di Py2

Nella shell interattiva si può chiedere a Python con che cosa abbiamo a che fare, Py2 ci dice che range(n) produce una lista:
>>> type(range(10))
<type 'list'>
Mentre in Py3 viene prodotto un "oggetto" che può essere iterato ad esempio con for:
>>> type(range(10))
<class 'range'>
Quasi sempre si può scrivere in modo compatibile con entrambe le major version del linguaggio, ad esempio questa sintassi produce sempre una lista sia in Py2 che Py3:
list(range(10))
E questo dovrebbe rispondere anche alla domanda se range va usato *sempre* in un ciclo... no, la lista prodotta si può usare per altri scopi. Invece il range di Py3 (equivalente al xrange di Py2) è pensato appositamente per essere iterato in un ciclo, il vantaggio è che non viene prodotta subito tutta la lista (che occupa memoria) ma un valore per volta.
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***


Pagina: 1



Esegui il login per scrivere una risposta.