Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi N - Z > Programmazione avanzata > esercizi
Pages (4): « 1 [2] 3 4 »   Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
Vikyg13
.arcimaestro.

User info:
Registered: Feb 2006
Posts: 290 (0.04 al dì)
Location:
Corso: Comunicazione Digitale
Anno: Primo
Time Online: 3 Days, 1:12:06: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Gli altri esercizi sono praticamente uguali a parte il 4 che ha qualche differenza nella moltiplicazione delle matrici (gli altri mi sembrano molto simili):

code:
import functools def print_matrix(m): s = '' for i in range(0,len(m)): s += "| {0} |\n".format(m[i]) return s def id_matrix(): try: size = int(input("Inserisci la dimensione della matrice: ")) m = [[1 if(x==y) else 0 for x in range(size)] for y in range(size)] return "Matrice identita'\n{0}".format(print_matrix(m)) except: return "Errore. Devi inserire un numero intero" def square_matrix(): try: size = int(input("Inserisci la dimensione della matrice: ")) n = 1 m = [[(n*(x+1))+(y*size) for x in range(size)] for y in range(size)] return "Matrice n*n\n{0}".format(print_matrix(m)) except: return "Errore. Devi inserire un numero intero" def trasposta_matrix(m): mt = [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))] return "Matrice\n{0}\nMatrice trasposta\n{1}".format(print_matrix(m),print_matrix(mt)) #definisco la funzione da usare con reduce() def sum(x,y): return x+y def moltiplicazione_matrici(m1,m2): try: if len(m1[0]) == len(m2): mf = [] #con le comprehension faccio la moltiplicazione fra righe e colonne mf = [ [ [m1[i][j]*m2[j][x] for j in range(len(m1[0]))] for x in range(len(m2[0])) ] for i in range(len(m1)) ] #con programmaz. funzionale sommo i risultati dei prodotto ottenendo il risultato finale prodotto = [ [functools.reduce(sum, mf[i][j]) for j in range(len(mf[0]))] for i in range(len(mf)) ] return "Prodotto fra {0} * {1}\n{2}".format(m1,m2,prodotto) else: return "Prodotto non eseguibile" except: return "Le matrici da moltiplicare sono errate"


L'esercizio 5 manca pure a me
Poi posto gli esercizi del lab 2

21-02-2011 10:11
Click Here to See the Profile for Vikyg13 Click here to Send Vikyg13 a Private Message Find more posts by Vikyg13 Add Vikyg13 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
kirka85
.illuminato.

User info:
Registered: Jun 2005
Posts: 174 (0.02 al dì)
Location: Milano
Corso: Informatica per la Comunicazione
Anno: 2
Time Online: 6 Days, 19:03:17 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ecco l'ese 1.5, cmq per me sti esercizietti nn sono per niente banali o facili, e rispetto ai temi d'esame dell'anno scorso sembrano uno scherzo...
Vikyg13 hai frequentato le lezioni? io sono studentessa lavoratrice e davvero mi sembra un esame tostissimo...

code:
##Similarly to the ls-l example please implement: ## ## 1. The cat command, i.e., a command that given a list of files prints their content on the terminal (man cat to get more info). ## 2. The chmod command, i.e., a command that permits to change the access mode of a given group of files (man chmod to get more info) ## 3. The more command, i.e., a command that given a file prints its content 30 rows at a time and way a keystroke after every 30 rows to print the next 30. ## import os, stat def cat(filename): #1 '''Print a file to the standard output.''' f = open(filename, "r") flag=True while flag: line = f.readline() if len(line) == 0: flag=False print (line) f.close() def more(filename): #3 f = open(filename, "r") cont=1 flag=True while cont<31 and flag: line = f.readline() cont=cont+1 if len(line) == 0: flag=False if cont == 31: k=input('[more]') cont=1 print (line) f.close() if __name__=='__main__': cat('Matrix.py') os.chmod('hello.py', stat.S_ISUID) #2 more('Matrix.py')

__________________
:bubble:

21-02-2011 11:04
Click Here to See the Profile for kirka85 Click here to Send kirka85 a Private Message Find more posts by kirka85 Add kirka85 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
maXmo
.fedelissimo.

User info:
Registered: Nov 2006
Posts: 49 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 8:22:23 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Qualcuno di voi sa perché va in overflow questo es :? a livello di logica l'ho riguardato mille volte ma non capisco perché dopo un po' che gira a cercare il numero divisibile per tutti i numeri da 1 a 20 sembra non trovarlo mai :?

code:
numerocorrente = 1 def controlladivisione(): global numerocorrente divisibile = True for numero in [y for y in range(1,21)]: if numerocorrente % numero !=0: divisibile = False numerocorrente+=1 break if divisibile == True: print(numerocorrente) return True check = lambda: controlladivisione()==True or check() if __name__ == "__main__": check()

21-02-2011 11:09
Click Here to See the Profile for maXmo Click here to Send maXmo a Private Message Find more posts by maXmo Add maXmo to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Vikyg13
.arcimaestro.

User info:
Registered: Feb 2006
Posts: 290 (0.04 al dì)
Location:
Corso: Comunicazione Digitale
Anno: Primo
Time Online: 3 Days, 1:12:06: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

@kirka: Ho frequentato poco. Comunque sì i temi d'esame non sono per nulla facili e anche io ho trovato ostici questi esercizi qui di laboratorio.
L'esame è tostissimo, l'anno scorso lo hanno passato veramente in pochi (mi pare soltanto in 5 in tutto l'anno). Speriamo di riuscire a passarlo prima o poi :D

@max: io quell'esercizio l'ho interpretato come il numero più piccolo divisibile per entrambi i numeri 1 e 20, anche perchè non so se esiste un numero divisibile per tutti i numeri da 1 a 20, credo proprio di no...
per come l'ho interpretato io la soluzione è:

code:
def es02(): return min(filter(lambda n: n%1==0 and n%20==0, range(1,100)))


Anche perchè per come lo imposti tu, a parte che

code:
for numero in range(1,21)


non c'è bisogno della list comprhension.
Il tuo programma esegue 1%1 che è 0 quindi non incrementa numero corrente, quindi 1%2 che è != 0, quindi 2%3 ecc...
la variabile non sarà mai True in sostanza e quindi la ricorsione check() va all'infinito, ecco perchè.

Spero di aver detto giusto.

21-02-2011 11:56
Click Here to See the Profile for Vikyg13 Click here to Send Vikyg13 a Private Message Find more posts by Vikyg13 Add Vikyg13 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
maXmo
.fedelissimo.

User info:
Registered: Nov 2006
Posts: 49 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 8:22:23 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Innanzitutto grazie per la risposta...mi ha fulminato un'idea, come ho fatto a non pensarci prima grrrr...si tratta di trovare il Minimo Comune Multiplo!!! Quindi si tratta di scrivere solo una funzione che trovi tutti i fattori, comuni o non comuni, e moltiplicarli tra di loro ciascuno preso una sola volta con l’esponente più piccolo!

21-02-2011 12:39
Click Here to See the Profile for maXmo Click here to Send maXmo a Private Message Find more posts by maXmo Add maXmo to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
kirka85
.illuminato.

User info:
Registered: Jun 2005
Posts: 174 (0.02 al dì)
Location: Milano
Corso: Informatica per la Comunicazione
Anno: 2
Time Online: 6 Days, 19:03:17 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ecco , ma perchè quindi gli esercizi e le slide sono in inglese? per facilitarci :)
Io ho inteso che bisogna trovare il numero più piccolo divisibile per tutti i numeri tra 1 e 20(Calculate the smallest number divisible by each of the numbers 1 to 20)

ecco la mia soluzione all'esercizio 2.1, ho preso spunto da quihttp://www.geekality.net/garage-sale/project-euler-c/

code:
##Write the solutions for the following quizzes by using functional programming: ## ## 1. Sum all the natural numbers below one thousand that are multiples of 3 or 5. ## 2. Calculate the smallest number divisible by each of the numbers 1 to 20. ## 3. Calculate the sum of the number 2^1000 ## 4. Calculate the first term in the Fibonacci sequence to contain 1000 digits. import functools, fractions, math somma=functools.reduce(lambda x, y: x+y, filter(lambda x: ((x % 5 == 0) or (x % 3 == 0) ), range(1,1000))) #1 print (somma) SmallestNumberDivisible=functools.reduce(lambda x, y: x*y/fractions.gcd(x,y), range(1,21)) #2 print (SmallestNumberDivisible) s=functools.reduce(lambda x,y:x+y, list(str(2**1000))) #3 print (s) aureo=1.6180339887 #4 fibc=lambda n: (aureo**n)/(5**(1/2)) #formula compatta e approssimativa fib=lambda n: n if n < 2 else fib(n-1) + fib(n-2) lunghezza=len(str(fibc(1000))) #dopo 1000 overflow e cmq dovrei andare avanti usando un ciclo trovando quello di lunghezza mille digit=1000 n=( digit+ ((math.log(5)/2)-1) )/math.log(aureo) #formula inversa,in input la lunghezza,output digit print (n) #2077

__________________
:bubble:

21-02-2011 12:53
Click Here to See the Profile for kirka85 Click here to Send kirka85 a Private Message Find more posts by kirka85 Add kirka85 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
maXmo
.fedelissimo.

User info:
Registered: Nov 2006
Posts: 49 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 8:22:23 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Direi perfette ;) durante l'esame abbiamo a disposizione slides, documentazione e internet? perché a volte mi ritrovo a dovermi documentare su ciò che riguarda l'esercizio (es. Fibonacci) per poterlo risolvere..

Ne approfitto per aggiungere la mia visione dell'esercizio pa-es2_2 quello della frequenza delle parole nel testo:

code:
wordsandcounters = {} def leggituttoiltesto(nomefile): data_file = open(nomefile, 'r') for line in data_file: words = line.rsplit(' ') for word in words: word.upper() if not word in wordsandcounters: wordsandcounters[word] = 1 else: contatore = wordsandcounters.get(word) wordsandcounters[word] = contatore+1 print(wordsandcounters.items()) if __name__ == '__main__': leggituttoiltesto('README.TXT')


L'unica cosa che non fa questo programma è contare la punteggiatura come se stante..qualche dritta? non vorrei dover usare le regex x_x

Last edited by maXmo on 21-02-2011 at 14:16

21-02-2011 13:12
Click Here to See the Profile for maXmo Click here to Send maXmo a Private Message Find more posts by maXmo Add maXmo to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Vikyg13
.arcimaestro.

User info:
Registered: Feb 2006
Posts: 290 (0.04 al dì)
Location:
Corso: Comunicazione Digitale
Anno: Primo
Time Online: 3 Days, 1:12:06: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

La mia versione dell'es2.2
Separa la punteggiatura, mi dà qualche problema ma per le parole con l'accento, non ho trovato codifica più adatta

code:
import string, re, codecs def split_word(input_file): return reduce(lambda x,y: x+y, [ [l.strip() for l in re.split('(\W+)', line) if l.strip() ] for line in input_file ] ) def to_lower(lst): return [elem.lower() for elem in lst] def count_elem(lst): return dict([ (word,lst.count(word)) for word in lst ] ) def diz_tostring(d): s = '' for elem in d: s += '{0}= {1}\n'.format(elem,d[elem]) return s def read_count_file(f): input_file = codecs.open(f,'r') return diz_tostring( count_elem(to_lower(split_word(input_file))) ) input_file.close()

21-02-2011 14:53
Click Here to See the Profile for Vikyg13 Click here to Send Vikyg13 a Private Message Find more posts by Vikyg13 Add Vikyg13 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
maXmo
.fedelissimo.

User info:
Registered: Nov 2006
Posts: 49 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 8:22:23 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ecco la mia interpretazione della funzione di Taylor per il calcolo di sinx...non ne sono sicuro al 100% ma ho seguito la regola di wikipedia e trasposta così com'era la sommatoria tramite un for...

code:
import math from functools import reduce import operator def sinxtaylor(x,n): senx = 0 for numero in range(1,n+2,2): print(numero) senx += pow(x,n)/reduce(operator.mul,[i for i in range(n,0,-1)]) print(senx) if __name__ == '__main__': sinxtaylor(1,3)

21-02-2011 15:53
Click Here to See the Profile for maXmo Click here to Send maXmo a Private Message Find more posts by maXmo Add maXmo to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
maXmo
.fedelissimo.

User info:
Registered: Nov 2006
Posts: 49 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 8:22:23 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ecco la mia interpretazione dell'es1.3 degli esercizi pa-es4.html
Non mi è chiaro cosa debba modificare di questo codice per soddisfare anche la richiesta "the target should be a name containing an instance of the child class"..il file va salvato con nome pa_es4_1.py

code:
import re '''mi basta controllare la metà della parola''' import operator class stringheestese: __metaclass__=str def controllapalindroma(word): #1 p = re.compile(r'(\W)', re.IGNORECASE) word = p.sub('',word) print(word) if (len(word)%2!=0): '''halunghezzadispari''' primameta = word[0:int(len(word)/2)+1] secondameta= word[int(len(word)/2):int(len(word))] else: primameta = word[0:int(len(word)/2)] secondameta= word[int(len(word)/2):int(len(word))] secondareverse = "" for i in range(len(secondameta),0,-1): secondareverse+=secondameta[i-1:i] if secondareverse == primameta: print("la parola è palindroma") else: print("non è palindroma") def subtractletters(command): #2 print(command.index("-")) word = command[1: command.index("-")-1] letters = command[command.index("-")+2:len(command)-1] p = re.compile("(["+letters+"])+") print("originale: "+word) word = p.sub('',word) print("rimosse le lettere "+ letters + ": " + word) def dalistatrovaanagrammireciproci(dizionariodistringh e): #3 for current_key in dizionariodistringhe: '''preparo il dizionario della parola che sto analizzando con lettere e contatori''' tempdict1 = {} for letter in dizionariodistringhe[current_key]: '''se ce già aggiorno il contatore''' if letter in tempdict1: tempcounter = tempdict1[letter] tempdict1.pop(letter) tempdict1[letter] = tempcounter+1 else: tempdict1[letter] = dizionariodistringhe[current_key].count(letter) '''preparo il dizionario di ogni nuova parola e lo confronto con quello che ho gia''' tempdict2 = {} for key in dizionariodistringhe: if key != current_key: for letter in dizionariodistringhe[key]: if letter in tempdict2: tempcounter = tempdict2[letter] tempdict2.pop(letter) tempdict2[letter] = tempcounter+1 else: tempdict2[letter] = dizionariodistringhe[key].count(letter) if tempdict1 == tempdict2: print(dizionariodistringhe[current_key] + " è l'anagramma di " + dizionariodistringhe[key]) tempdict2 = {} if __name__ == '__main__': import pa_es4_1 pa_es4_1.stringheestese.controllapalindroma("gor.,... r rog") pa_es4_1.stringheestese.subtractletters('"Walter Cazzola"-"abcwxyz"') pa_es4_1.stringheestese. dalistatrovaanagrammireciproci({'test1':'ciao','te st2':'addio','test3':'caio','test4':'oiac','test5' :'oddai'})

22-02-2011 10:59
Click Here to See the Profile for maXmo Click here to Send maXmo a Private Message Find more posts by maXmo Add maXmo to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
fra78mi
.amico.

User info:
Registered: Sep 2002
Posts: 35 (0.00 al dì)
Location: Milano
Corso: informatica per la comunicazione
Anno: 1
Time Online: 13:14:59 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ciao ragazzi, anche io studente lavoratore e vorrei dare programmazione avanzata di Cazzola il 9/3 ... cominciando oggi a studiare secondo voi è fattibile?

Grazie

ciao
Francesco

23-02-2011 13:41
Click Here to See the Profile for fra78mi Click here to Send fra78mi a Private Message Visit fra78mi's homepage! Find more posts by fra78mi Add fra78mi to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Vikyg13
.arcimaestro.

User info:
Registered: Feb 2006
Posts: 290 (0.04 al dì)
Location:
Corso: Comunicazione Digitale
Anno: Primo
Time Online: 3 Days, 1:12:06: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Dipende a che livello stai tu di Python e di programmazione in generale.

Diciamo che partendo da 0 con Python e da un livello medio-basso di competenze generali di programmazione secondo me ci vogliono almeno due mesi di studio. Poi dipende dalle capacità personali ovviamente, ma è un esame che richiede una conoscenza e una praticità con il linguaggio particolarmente elevata.
Per farsi un'idea ci sono i temi d'esame dell'anno scorso

23-02-2011 14:00
Click Here to See the Profile for Vikyg13 Click here to Send Vikyg13 a Private Message Find more posts by Vikyg13 Add Vikyg13 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
tooler
.fedelissimo.

User info:
Registered: Feb 2005
Posts: 46 (0.01 al dì)
Location:
Corso: comunicazione digitale
Anno:
Time Online: 9:48:45 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ma in quello sulle matrici usi numpy?? ragazzi ma all'esame non c'è numpy.

comunque bello il reduce sulla sum nella moltiplicazione di matrici! non ci avevo pensato

e in quelli sul funzionale.. ma itertools?!? è IL MODULO per la programmazione funzionale..

ma perchè nell'ultimo usi come metaclasse string?!?!?!?!?

io ho provato a rifare gli esercizi dei compiti in maniera un po' più KISS dei metodi del prof.. se a qualcuno interessa li posto..

Last edited by tooler on 23-02-2011 at 18:18

23-02-2011 18:16
Click Here to See the Profile for tooler Click here to Send tooler a Private Message Find more posts by tooler Add tooler to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
kirka85
.illuminato.

User info:
Registered: Jun 2005
Posts: 174 (0.02 al dì)
Location: Milano
Corso: Informatica per la Comunicazione
Anno: 2
Time Online: 6 Days, 19:03:17 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

@tooler: ok quindi niente numpy all'esame... ma possiamo usare slide e internet?
posta tuttto quello che hai, ci sarebbe di grande aiuto...grazie

__________________
:bubble:

24-02-2011 09:48
Click Here to See the Profile for kirka85 Click here to Send kirka85 a Private Message Find more posts by kirka85 Add kirka85 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
tooler
.fedelissimo.

User info:
Registered: Feb 2005
Posts: 46 (0.01 al dì)
Location:
Corso: comunicazione digitale
Anno:
Time Online: 9:48:45 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

internet??
scusa prima provi a usare numpy che è per il calcolo numerico e poi pensi a internet? vabeh..

no niente internet, le slide non lo so io non le ho mai usate, però c 'è il reference.. ragazzi imparate a usarlo, tutta la roba sui decoratori metaclassi e molte cose "idiomatiche" di sintassi ci sono sulle reference, bisogna guardarsele per capire dove sono!
e comunque a parte generatori metaclassi e decoratori di "python" c'è poco.. il più è risucire a fare gli esercizi.. se l'esame fosse in java non penso cambierebbe molto a livello di difficoltà..

24-02-2011 14:20
Click Here to See the Profile for tooler Click here to Send tooler a Private Message Find more posts by tooler Add tooler to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 08:43.    Post New Thread    Post A Reply
Pages (4): « 1 [2] 3 4 »   Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.045 seconds (85.63% PHP - 14.37% MySQL) con 26 query.