Gentilissimo Prof. Mensa, la ringrazio per la sua dura divulgazione pitonica, tuttavia la pregherei nelle prossime lezioni di evitare di fare keyboard shaming. Tutte le tastiere meritano lo stesso rispetto, a prescindere dai caratteri, dal colore o dallo store di provenienza. Per scusarci del disguido agli studenti saranno forniti tutti i caratteri di cui sono sprovvisti a spese dell'università. Cordialmente, Magnifico Rettore
I COMPITI, numero 1 prof # Trovare il valore massimo fra le due liste l1 e l2 l1 = [1, 5, 10, 1] l2 = [12, 3] l3 = l1 + l2 max_l3 = max(l3) print(max_l3) print("") # Creare una lista che contenga nella posizione i-esima il numero di occorrenze di i in l1, # sapendo che l1 può avere solo 0, 1 e 2 come valori => count l1 = [0, 1, 0, 0, 2, 1, 2, 0] i_0 = l1.count(0) i_1 = l1.count(1) i_2 = l1.count(2) l2 = [i_0, i_1, i_2] print(l2) print("") # Controllare che le due liste siano identiche => reverse l1 = [1, 5, 10, 1] l2 = [1, 5, 10, 1] # tanto per l1.reverse() l2.reverse() if l1 == l2: print("Le due liste sono identiche") else: print("Le due liste non sono identiche")
Soluzione alternativa (ma peggiore) per il primo esercizio: massimo = max(max(l1),max(l2)) Soluzione sborona per il secondo, che forse (molto forse) avrà senso tra qualche lezione: lista = [l1.count(i) for i in [0,1,2]] Domanda per il terzo esercizio: perché controllare direttamente if l1.reverse() == l2.reverse() non funzionerebbe?
Volevo fare un osservazione di natura logica: Le liste sono insiemi (e quindi classi + unicità)? sembra proprio di sì! perchè si differenziano solo per ordine dalle secondo e dalle terze (insiemi e classi), praticamente sono il terzo piolo di una scala che credo continuerà, come è stato fatto con i numeri naturali fino ai numeri complessi in storia della matematica. (forse commento troppo pazzo XD)
Ecco il mio compito per questa lezione (ps. grazie davvero a tutti per le correzioni della settimana scorsa!): frase = input('Ciao, scrivi una frase: ') #Chiedo la frase frase = frase.split(" ") #Uso lo spazio per separare le parole e inserirle in una lista numparole = len(frase) #conto il numero di parole (la lunghezza della lista) print("Hai scritto", numparole, "parole ") #stampo il numero di parole cambio = input("Quale parola vuoi cambiare? Indica la posizione della parola che vuoi cambiare. ") #chiedo quale parola vuole cambiare cambio = int(cambio) #casto l'input ad int cambio = cambio -1 #sottraggo 1 al numero indicato dall'utente così di avere l'indice primaparola = frase[0] #salvo la prima parola così da poterla scambiare successivamente frasefinale = " " #inizializzo una stringa vuota per il .join() successivo if cambio > numparole: #controllo che non vada fuori index print("Non hai scritto così tante parole!") else: frase[0] = frase[cambio] #scambio le parole frase[cambio] = primaparola #scambio le parole print(frasefinale.join(frase)) #uso .join() per "castare" la lista in una stringa e la stampo
@@enkk Non capisco perchè prima ho scritto un commento e forse youtube l'ha tolto, vabbè! Comunque ti dico che farò il corso di boolean di informatica con un tutor privato, voglio qualcuno che mi segue nelle mie follie di unire l'informatica alla mia vita come parte integrante della mia persona, per motivi che non spiego perchè in realtà quest cosa già c'era nel profondissimo del mio inconscio per delle cose fatte da ragazzino con linux e del micro-hacking innocuo vabbè XD, sarà una bella avventura! (sto già iniziando a parlare di questa cosa con chi mi circonda, spero un giorno di scriverla pure in un libro)
e questi sono i 3 mini compitini: # trovare il valore massimo fra le due liste l1 e l2 l1 = [1, 5, 10, 1] l2 = [12, 3] l3 = l1 + l2 max_value = max(l3) # creare una lista che contenga nella posizione i-esima il numero di occorrenze di i in l1, sapendo che l1 può avere solo 0, 1 e 2 come valori => count l1 = [0, 1, 0, 0, 2, 1, 2, 0] l2 = [l1.count(0), l1.count(1), l1.count(2)] # controllare che le due liste siano identiche => reverse tanto per l1 = [1, 5, 10, 1] l2 = [1, 5, 10, 1] if l1 == l2 or l1.reverse() == l2.reverse(): print("Le due liste sono identiche") else: print("Le due liste sono diverse")
Il controllo if ... l1.reverse() == l2.reverse() NON funziona perché lista.reverse() "fa cose" (inverte l'ordine degli elementi nella lista) ma non ritorna alcunché (None, letteralmente)
Compito per casa: # Chiedo all'utente di inserire una frase frase = input("inserisci qui la tua frase: ") # Divido la frase in parole e le metto in una lista cf = frase.split(" ") # Conto le parole all'interno della frase e le stampo lf = len(frase.split(" ")) print("la frase contiene: ", lf, "parole") # Chiedo all'utente quale parola desidera mettere in prima posizione pp = input("quale parola vuoi spostare al primo posto? (INSERISCI LA POSIZIONE IN CUI SI TROVA)") # Definisco se l'input inserito è una cifra e se lo è lo trasformo in intero. # sottraggo 1 all'input basandomi sul fatto che l'utente non sappia che si inizia a contare da 0. if pp.isdigit(): pp = int(pp) - 1 else: print("l'input non è valido!") # Definisco se l'input inserito è nel range della lunghezza della frase e che non sia 0 if pp > 0 and pp
ma scusate, a riga 56 non dovrebbero esserci degli && ( forse in python si dice and ) al posto degli or? Comunque un umilissimo feedback, quando sbaglia qualcosa es: 47:39, al posto di spiegargli l'errore faglielo printare così ci arriva da sola.
Per riga 56: sì, e Python richiede l'and. Per la correzione/spiegazione: di solito glielo fa printare, ma quel giorno erano particolarmente di fretta...
@Enkk per il discorso della stringa come lista, non sarebbe più corretto paragonare la stringa alle tuple in quanto immutabili? (So che non sono state introdotte ancora nel corso e forse è per questo che il paragone non è stato fatto) (non ho finito la live)
Riga 56 del compito dovrebbero essere tutti and invece di or, inoltre se fossero stati or per qualche motivo gli elif sotto non avrebbero avuto senso dato che sono giá presenti sopra con degli or e quindi non sara mai un else if sensato.
Gli argomenti hanno una buona sovrapposizione ma il metodo di insegnamento è diverso. Molto più tailored su Michela e comunque più orientato a neofiti.
compitino di oggi molto veloce, eccolo qui: # Chiedere una frase all'utente e stampare il numero di parole che contiene (consideriamo lo spazio come separatore di parola) # Poi chiedere all'utente quale parola vuole cambiare. L'utente fornirà la posizione della parola (verificare che sia una posizione esistente) # Sostituire la prima parola della frase con la parola nella posizione fornita dall'utente. # Esempio: 'Ciao come stai?' fornendo 2 diventa 'come Ciao stai?' # Fare dunque attenzione alla distizione fra indici e posizioni. frase = input("HEY SCEMOTTO!! Dimmi una frase va: ").split(" ") pos_parola = int(input("Dai cambia una parola, dimmi la posizione della parola che vuoi cambiare: ")) if pos_parola > len(frase): print("MA SEI SCEMO NON C'È NESSUNA PAROLA IN QUELLA POSIZIONE") else: i_parola = pos_parola - 1 prima_parola = frase[0] frase[0] = frase[i_parola] frase[i_parola] = prima_parola print("La tua nuova frase è: " + " ".join(frase))
Non ricordo se l'avesse più fatto in qualche lezione precedente (forse ne aveva accennato?), ma in Python anziché fare quella "triangolazione" si possono fare più dichiarazioni in contemporanea - ad esempio, qui: frase[0], frase[i_parola] = frase[i_parola], frase[0]
complimenti dr. Mensa, lezione ottima come di consueto
L'intuizione e la sperimentazione di Michelle a 41:37 è spettacolare quanto la reazione di Enkk! :D Complimenti
Lezione veloce e defaticante!
Gentilissimo Prof. Mensa,
la ringrazio per la sua dura divulgazione pitonica, tuttavia la pregherei nelle prossime lezioni di evitare di fare keyboard shaming.
Tutte le tastiere meritano lo stesso rispetto, a prescindere dai caratteri, dal colore o dallo store di provenienza.
Per scusarci del disguido agli studenti saranno forniti tutti i caratteri di cui sono sprovvisti a spese dell'università.
Cordialmente,
Magnifico Rettore
Serie migliore di tutta youtube!
I COMPITI, numero 1 prof
# Trovare il valore massimo fra le due liste l1 e l2
l1 = [1, 5, 10, 1]
l2 = [12, 3]
l3 = l1 + l2
max_l3 = max(l3)
print(max_l3)
print("")
# Creare una lista che contenga nella posizione i-esima il numero di occorrenze di i in l1,
# sapendo che l1 può avere solo 0, 1 e 2 come valori => count
l1 = [0, 1, 0, 0, 2, 1, 2, 0]
i_0 = l1.count(0)
i_1 = l1.count(1)
i_2 = l1.count(2)
l2 = [i_0, i_1, i_2]
print(l2)
print("")
# Controllare che le due liste siano identiche => reverse
l1 = [1, 5, 10, 1]
l2 = [1, 5, 10, 1]
# tanto per
l1.reverse()
l2.reverse()
if l1 == l2:
print("Le due liste sono identiche")
else:
print("Le due liste non sono identiche")
Soluzione alternativa (ma peggiore) per il primo esercizio:
massimo = max(max(l1),max(l2))
Soluzione sborona per il secondo, che forse (molto forse) avrà senso tra qualche lezione:
lista = [l1.count(i) for i in [0,1,2]]
Domanda per il terzo esercizio: perché controllare direttamente
if l1.reverse() == l2.reverse()
non funzionerebbe?
Volevo fare un osservazione di natura logica: Le liste sono insiemi (e quindi classi + unicità)? sembra proprio di sì! perchè si differenziano solo per ordine dalle secondo e dalle terze (insiemi e classi), praticamente sono il terzo piolo di una scala che credo continuerà, come è stato fatto con i numeri naturali fino ai numeri complessi in storia della matematica. (forse commento troppo pazzo XD)
51:12 Secondo me la stai punendo troppo sulle tuple, dovresti trovare il modo di asseccondarla di più e portarla dove vuoi tu allo stesso tempo
sigma face spettacolare di enkk al min 41:51
Ecco il mio compito per questa lezione (ps. grazie davvero a tutti per le correzioni della settimana scorsa!):
frase = input('Ciao, scrivi una frase:
') #Chiedo la frase
frase = frase.split(" ") #Uso lo spazio per separare le parole e inserirle in una lista
numparole = len(frase) #conto il numero di parole (la lunghezza della lista)
print("Hai scritto", numparole, "parole
") #stampo il numero di parole
cambio = input("Quale parola vuoi cambiare? Indica la posizione della parola che vuoi cambiare.
") #chiedo quale parola vuole cambiare
cambio = int(cambio) #casto l'input ad int
cambio = cambio -1 #sottraggo 1 al numero indicato dall'utente così di avere l'indice
primaparola = frase[0] #salvo la prima parola così da poterla scambiare successivamente
frasefinale = " " #inizializzo una stringa vuota per il .join() successivo
if cambio > numparole: #controllo che non vada fuori index
print("Non hai scritto così tante parole!")
else:
frase[0] = frase[cambio] #scambio le parole
frase[cambio] = primaparola #scambio le parole
print(frasefinale.join(frase)) #uso .join() per "castare" la lista in una stringa e la stampo
sto usando pycharm community version da questa lezione, va bene? ho visto pure un tutorial su come usarlo
È ottimo!
@@enkk Non capisco perchè prima ho scritto un commento e forse youtube l'ha tolto, vabbè! Comunque ti dico che farò il corso di boolean di informatica con un tutor privato, voglio qualcuno che mi segue nelle mie follie di unire l'informatica alla mia vita come parte integrante della mia persona, per motivi che non spiego perchè in realtà quest cosa già c'era nel profondissimo del mio inconscio per delle cose fatte da ragazzino con linux e del micro-hacking innocuo vabbè XD, sarà una bella avventura! (sto già iniziando a parlare di questa cosa con chi mi circonda, spero un giorno di scriverla pure in un libro)
e questi sono i 3 mini compitini:
# trovare il valore massimo fra le due liste l1 e l2
l1 = [1, 5, 10, 1]
l2 = [12, 3]
l3 = l1 + l2
max_value = max(l3)
# creare una lista che contenga nella posizione i-esima il numero di occorrenze di i in l1, sapendo che l1 può avere solo 0, 1 e 2 come valori => count
l1 = [0, 1, 0, 0, 2, 1, 2, 0]
l2 = [l1.count(0), l1.count(1), l1.count(2)]
# controllare che le due liste siano identiche => reverse tanto per
l1 = [1, 5, 10, 1]
l2 = [1, 5, 10, 1]
if l1 == l2 or l1.reverse() == l2.reverse():
print("Le due liste sono identiche")
else:
print("Le due liste sono diverse")
Il controllo
if ... l1.reverse() == l2.reverse()
NON funziona perché lista.reverse() "fa cose" (inverte l'ordine degli elementi nella lista) ma non ritorna alcunché (None, letteralmente)
Infatti io per risolvere ho usato altre risorse, e non ho usato la via piu' facile.
Compito per casa:
# Chiedo all'utente di inserire una frase
frase = input("inserisci qui la tua frase: ")
# Divido la frase in parole e le metto in una lista
cf = frase.split(" ")
# Conto le parole all'interno della frase e le stampo
lf = len(frase.split(" "))
print("la frase contiene: ", lf, "parole")
# Chiedo all'utente quale parola desidera mettere in prima posizione
pp = input("quale parola vuoi spostare al primo posto?
(INSERISCI LA POSIZIONE IN CUI SI TROVA)")
# Definisco se l'input inserito è una cifra e se lo è lo trasformo in intero.
# sottraggo 1 all'input basandomi sul fatto che l'utente non sappia che si inizia a contare da 0.
if pp.isdigit():
pp = int(pp) - 1
else:
print("l'input non è valido!")
# Definisco se l'input inserito è nel range della lunghezza della frase e che non sia 0
if pp > 0 and pp
ma scusate, a riga 56 non dovrebbero esserci degli && ( forse in python si dice and ) al posto degli or?
Comunque un umilissimo feedback, quando sbaglia qualcosa es: 47:39, al posto di spiegargli l'errore faglielo printare così ci arriva da sola.
Per riga 56: sì, e Python richiede l'and.
Per la correzione/spiegazione: di solito glielo fa printare, ma quel giorno erano particolarmente di fretta...
Sì, purtroppo eravamo di fretta e volevo fare più esercizi possibili.
@Enkk per il discorso della stringa come lista, non sarebbe più corretto paragonare la stringa alle tuple in quanto immutabili? (So che non sono state introdotte ancora nel corso e forse è per questo che il paragone non è stato fatto) (non ho finito la live)
Sì, sono d'accordo con te. Volevo proteggere Michelle dalle tuple, ma alla fine le ha scovate da sola.
@@enkk ahahahah ho visto subito dopo 😂
Riga 56 del compito dovrebbero essere tutti and invece di or, inoltre se fossero stati or per qualche motivo gli elif sotto non avrebbero avuto senso dato che sono giá presenti sopra con degli or e quindi non sara mai un else if sensato.
enkk ma in questo corso insegni le stesse cose dell'altro hard python o hanno cose differenti?
Gli argomenti hanno una buona sovrapposizione ma il metodo di insegnamento è diverso. Molto più tailored su Michela e comunque più orientato a neofiti.
@@enkk Perfetto, grazie mille, allora in caso finito questo mi guardo anche l'altro
Su Github manca la lezione 6 con i compiti da fare a casa, o sono rinco io che non la trovo? :D
No, il github è in ritardo perché ho le live nel weekend e non sono ancora riuscito a fare la commit.
Ho fattto ora :)
compitino di oggi molto veloce, eccolo qui:
# Chiedere una frase all'utente e stampare il numero di parole che contiene (consideriamo lo spazio come separatore di parola)
# Poi chiedere all'utente quale parola vuole cambiare. L'utente fornirà la posizione della parola (verificare che sia una posizione esistente)
# Sostituire la prima parola della frase con la parola nella posizione fornita dall'utente.
# Esempio: 'Ciao come stai?' fornendo 2 diventa 'come Ciao stai?'
# Fare dunque attenzione alla distizione fra indici e posizioni.
frase = input("HEY SCEMOTTO!! Dimmi una frase va:
").split(" ")
pos_parola = int(input("Dai cambia una parola, dimmi la posizione della parola che vuoi cambiare: "))
if pos_parola > len(frase):
print("MA SEI SCEMO NON C'È NESSUNA PAROLA IN QUELLA POSIZIONE")
else:
i_parola = pos_parola - 1
prima_parola = frase[0]
frase[0] = frase[i_parola]
frase[i_parola] = prima_parola
print("La tua nuova frase è:
" + " ".join(frase))
Non ricordo se l'avesse più fatto in qualche lezione precedente (forse ne aveva accennato?), ma in Python anziché fare quella "triangolazione" si possono fare più dichiarazioni in contemporanea - ad esempio, qui:
frase[0], frase[i_parola] = frase[i_parola], frase[0]
@@markkraun4472 giusto ricordo, mi viene più spontaneo fare così non so perché, grazie del consiglio!
Anche io ho i brividi, perché dopo 6 puntate continuo a non capire niente 🫠
Fai domandeeeeeee
@@enkk tranquillo questo commento è solo per l’algoritmo 🤭
Prodotto scadente e istruzioni poco chiare, non consiglio!
Ciao Francesco, puoi darmi un feedback più preciso così so come migliorare?
@@enkk scherzo enkkone ti seguo sempre e questa serie la seguo con molto interesse era solo una battuta
@@francescomearini7756 Ah ok, non l'avevo capita! Grazie allora.
@@enkk anzi scusa per il commento “negativo” che magari può essere interpretato male da alcune persone che guarderanno il video
Hai provato a metterlo nel riso?