yahoo informatica

Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.
yahoo informatica

yahoo indirizzo informatico


    parte 3° alfabeto informatico

    Admin
    Admin
    Admin


    Messaggi : 89
    Data di iscrizione : 20.11.08

    parte 3° alfabeto informatico Empty parte 3° alfabeto informatico

    Messaggio  Admin Sab Nov 22, 2008 7:02 am

    Nell'esempio viene utilizzato un'altro 'trucco' dell'operatore and. Se guardate la tabella di and potete osservare che la terza espressione è falsa senza che Python esegua un controllo sul secondo elemento. Se count >= len(copy) (in altre parole count < len(copy) è falsa) allora copy[count] non viene processata. Questo avviene perché Python sa che se la prima accezione è falsa, lo sono entrambe. Questo piccolo trucco è utile se la seconda metà dell'and causa un errore. Ho usato la prima espressione (count < len(copy)) per eseguire un controllo su count e controllare se count sia un indice valido (se non mi credete, rimuovete 'Jill' e 'Life', eseguite il programma e vedete se funziona ancora, quindi invertite l'ordine di count < len(copy) and copy[count] != prev con copy[count] != prev and count < len(copy)).
    Le espressioni booleane possono essere usate quando avete bisogno di verificare due o più elementi in una volta.
    10.1 Esempi
    password1.py
    ## Questo programma chiede ad un utente un nome ed una password,
    # poi controlla per accertarsi che gli sia consentito l'accesso.

    name = raw_input("What is your name? ")
    password = raw_input("What is the password? ")
    if name == "Josh" and password == "Friday":
    print "Welcome Josh"
    elif name == "Fred" and password == "Rock":
    print "Welcome Fred"
    else:
    print "I don't know you."
    Semplice esecuzione:
    What is your name? Josh
    What is the password? Friday
    Welcome Josh

    What is your name? Bill
    What is the password? Money
    I don't know you.
    10.2 Esercizi
    Scrivete un programma che spinga l'utente ad indovinare il vostro nome dandogli solamente 3 possibilità, dopo le quali il programma termina.
    Questo capitolo tratta i dizionari. I dizionari hanno chiavi e valori. Le chiavi sono usate per trovare i valori. Ecco un esempio di un dizionario in uso:
    def print_menu():
    print '1. Print Phone Numbers'
    print '2. Add a Phone Number'
    print '3. Remove a Phone Number'
    print '4. Lookup a Phone Number'
    print '5. Quit'
    print
    numbers = {}
    menu_choice = 0
    print_menu()
    while menu_choice != 5:
    menu_choice = input("Type in a number (1-5):")
    if menu_choice == 1:
    print "Telephone Numbers:"
    for x in numbers.keys():
    print "Name: ",x," \tNumber: ",numbers[x]
    print
    elif menu_choice == 2:
    print "Add Name and Number"
    name = raw_input("Name:")
    phone = raw_input("Number:")
    numbers[name] = phone
    elif menu_choice == 3:
    print "Remove Name and Number"
    name = raw_input("Name:")
    if numbers.has_key(name):
    del numbers[name]
    else:
    print name," was not found"
    elif menu_choice == 4:
    print "Lookup Number"
    name = raw_input("Name:")
    if numbers.has_key(name):
    print "The number is",numbers[name]
    else:
    print name," was not found"
    elif menu_choice != 5:
    print_menu()
    E qui l'output:
    1. Print Phone Numbers
    2. Add a Phone Number
    3. Remove a Phone Number
    4. Lookup a Phone Number
    5. Quit

    Type in a number (1-5):2
    Add Name and Number
    Name:Joe
    Number:545-4464
    Type in a number (1-5):2
    Add Name and Number
    Name:Jill
    Number:979-4654
    Type in a number (1-5):2
    Add Name and Number
    Name:Fred
    Number:132-9874
    Type in a number (1-5):1
    Telephone Numbers:
    Name: Jill Number: 979-4654
    Name: Joe Number: 545-4464
    Name: Fred Number: 132-9874

    Type in a number (1-5):4
    Lookup Number
    Name:Joe
    The number is 545-4464
    Type in a number (1-5):3
    Remove Name and Number
    Name:Fred
    Type in a number (1-5):1
    Telephone Numbers:
    Name: Jill Number: 979-4654
    Name: Joe Number: 545-4464

    Type in a number (1-5):5
    Questo programma è simile a quello con la lista di nomi nel capitolo sulle liste. Ecco come funziona il programma. Innanzitutto viene definita la funzione print_menu che visualizza sullo schermo un menu più volte usato nel programma. A questo punto compare la linea numbers = {} che dichiara numbers come un dizionario. Le linee seguenti fanno funzionare il menu:
    for x in numbers.keys():
    print "Name: ",x," \tNumber: ",numbers[x]
    Tramite questo ciclo si possono visualizzare le informazioni contenute nel dizionario. La funzione numbers.keys() restituisce una lista che viene poi utilizzata dal ciclo for. Questa lista non ha un ordine particolare, quindi se la volete in ordine alfabetico la dovrete ordinare. Con la notazione numbers[x] potete accedere ai singoli membri del dizionario. Ovviamente in questo caso x è una stringa. Successivamente la linea numbers[name] = phone aggiunge un nome ed un numero di telefono al dizionario. Se name è stato già inserito nel dizionario phone, rimpiazza il valore precedente. Le linee successive:
    if numbers.has_key(name):
    del numbers[name]
    Controllano se una chiave è già presente nel dizionario, in tal caso la rimuovono. La funzione numbers.has_key(name) ritorna vero se name è presente in numbers, altrimenti ritorna falso. La linea del del numbers[name] rimuove la chiave name ed il valore ad essa associato. Le linee:
    if numbers.has_key(name):
    print "The number is",numbers[name]
    Controllano se nel dizionario è presente una determinata chiave, se la trovano, stampano il numero ad essa associato. Infine, se la scelta non è presente nel menu (quindi non è valida) il programma visualizza nuovamente il menu.
    Ricapitolando: i dizionari hanno chiavi e valori. Le chiavi possono essere stringhe o numeri e puntano a valori. I valori puntati possono essere qualsiasi tipo di variabile, anche liste di dizionari (che possono contenere a loro volta dizionari e liste (paura eh? :=) )). Questo è un esempio che utilizza una lista in un dizionario:
    max_points = [25,25,50,25,100]
    assignments = ['hw ch 1','hw ch 2','quiz ','hw ch 3','test']
    students = {'#Max':max_points}

    def print_menu():
    print "1. Add student"
    print "2. Remove student"
    print "3. Print grades"
    print "4. Record grade"
    print "5. Print Menu"
    print "6. Exit"
    def print_all_grades():
    print '\t',
    for i in range(len(assignments)):
    print assignments[i],'\t',
    print
    keys = students.keys()
    keys.sort()
    for x in keys:
    print x,'\t',
    grades = students[x]
    print_grades(grades)
    def print_grades(grades):
    for i in range(len(grades)):
    print grades[i],'\t\t',
    print

    print_menu()
    menu_choice = 0
    while menu_choice != 6:
    print
    menu_choice = input("Menu Choice (1-6):")
    if menu_choice == 1:
    name = raw_input("Student to add:")
    students[name] = [0]*len(max_points)
    elif menu_choice == 2:
    name = raw_input("Student to remove:")
    if students.has_key(name):
    del students[name]
    else:
    print "Student: ",name," not found"
    elif menu_choice == 3:
    print_all_grades()

    elif menu_choice == 4:
    print "Record Grade"
    name = raw_input("Student:")
    if students.has_key(name):
    grades = students[name]
    print "Type in the number of the grade to record"
    print "Type a 0 (zero) to exit"
    for i in range(len(assignments)):
    print i+1,' ',assignments[i],'\t',
    print
    print_grades(grades)
    which = 1234
    while which != -1:
    which = input("Change which Grade:")
    which = which-1
    if 0 <= which < len(grades):
    grade = input("Grade:")
    grades[which] = grade
    elif which != -1:
    print "Invalid Grade Number"
    else:
    print "Student not found"
    elif menu_choice != 6:
    print_menu()
    E questo è il semplice output:
    1. Add student
    2. Remove student
    3. Print grades
    4. Record grade
    5. Print Menu
    6. Exit

    Menu Choice (1-6):3
    hw ch 1 hw ch 2 quiz hw ch 3 test
    #Max 25 25 50 25 100
    Menu Choice (1-6):6
    1. Add student
    2. Remove student
    3. Print grades
    4. Record grade
    5. Print Menu
    6. Exit

    Menu Choice (1-6):1
    Student to add:Bill
    Menu Choice (1-6):4
    Record Grade
    Student:Bill
    Type in the number of the grade to record
    Type a 0 (zero) to exit
    1 hw ch 1 2 hw ch 2 3 quiz 4 hw ch 3 5 test
    0 0 0 0 0
    Change which Grade:1
    Grade:25
    Change which Grade:2
    Grade:24
    Change which Grade:3
    Grade:45
    Change which Grade:4
    Grade:23
    Change which Grade:5
    Grade:95
    Change which Grade:0
    Menu Choice (1-6):3
    hw ch 1 hw ch 2 quiz hw ch 3 test
    #Max 25 25 50 25 100
    Bill 25 24 45 23 95

    Menu Choice (1-6):6
    La variabile students è un dizionario le cui chiavi sono i nomi degli studenti, i valori sono i voti degli studenti. Le prime due linee creano semplicemente due liste. La linea successiva students = {'#Max':max_points} crea un nuovo dizionario la cui chiave è #Max e il valore [25,25,50,25,100] (è il valore di max_points nel momento in cui il valore viene assegnato; viene usata la chiave #Max perché # è sempre ordinato sopra i caratteri alfabetici). Quindi viene definita la funzione print_menu. Le linee seguenti definiscono print_all_grades.
    def print_all_grades():

      La data/ora di oggi è Ven Apr 26, 2024 2:49 pm