Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-08-2010, 13:21   #1
Saverio92
Member
 
Iscritto dal: Nov 2007
Messaggi: 152
[Python 2.6] Funzione random per quiz

Salve, mi dedico da poco alla programmazione e sto scrivendo un quiz con python. mi sono bloccato però alla funzione random. ho strutturato il programma in funzioni che richiamerò in seguito. come posso usare la funzione random con le funzioni? per spiegarmi meglio metto il codice del programma.


Codice:
import random

def inizio():
    regolamento="Il regolamento del gioco è semplice. Verranno effettuate una serie di 10 domande con 4 possibilità di risposta. Per rispondere ad ogni domanda si avranno a disposizione 3 tentativi. Ogni volta che si da la risposta giusta verranno guadagnati 5 punti. Per ogni domanda sbagliata se ne perderanno 2."
    global punteggio
    punteggio=0
    print "      QUIZZETTONE"
    print "domande di cultura generale"
    print "--------------------------"
    print "Created by Simone Montalto"
    print "--------------------------"
    print
    print

    inizio=""
    while inizio!="1" or inizio!="2" or inizio!="giocare" or inizio!="regolamento":
        print "Cosa vuoi fare?"
        print "1 - giocare"
        print "2 - regolamento"
        inizio=raw_input("")
        if inizio=="1" or inizio=="giocare":
            break
        elif inizio=="2" or inizio=="regolamento":
            print regolamento
        
def uno():
    vita=3
    print
    for x in range(3):
        print "Chi ha affrescato il Giudizio Universale nella Cappella Sistina?"
        print "a - Raffaello"
        print "b - Michelangelo"
        print "c - Tiziano"
        print "d - Leonardo"
        risposta=raw_input("Risposta: ")
        if risposta=="b" or risposta=="B" or risposta=="Michelangelo" or risposta=="michelangelo" or risposta=="MICHELANGELO":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio


def due():
    vita=3
    print
    for x in range(3):
        print "Cos'è l'ONU?"
        print "a - LメOrganizzazione Nazionale Umanitaria"
        print "b - Unメorganizzazione che raccoglie molti Stati del mondo, che decidono liberamente di aderire e sono accettati solo se soddisfano determinati requisiti"
        print "c - LメOrganizzazione costituita dai 7 paesi maggiormente industrializzati più la Russia"
        print "d - Unメorganizzazione cui tutti gli Stati del mondo devono aderire"
        risposta=raw_input("Risposta: ")
        if risposta=="b" or risposta=="B" or risposta=="Unメorganizzazione che raccoglie molti Stati del mondo, che decidono liberamente di aderire e sono accettati solo se soddisfano determinati requisiti" or risposta=="unメorganizzazione che raccoglie molti Stati del mondo, che decidono liberamente di aderire e sono accettati solo se soddisfano determinati requisiti":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio


def tre():
    vita=3
    print
    for x in range(3):
        print "Quando è stato abbattutto il Muro di Berlino?"
        print "a - 1980"
        print "b - 1985"
        print "c - 1989"
        print "d - 1993"
        risposta=raw_input("Risposta: ")
        if risposta=="c" or risposta=="C" or risposta=="1989":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio


def quattro():
    vita=3
    print
    for x in range(3):
        print "Che cosa si intende per settore terziario?"
        print "a - Attività manifatturiere"
        print "b - Attività non profit"
        print "c - Attività di servizi"
        print "d - Attività artigianali"
        risposta=raw_input("Risposta: ")
        if risposta=="c" or risposta=="C" or risposta=="Attività di servizi" or risposta=="attività di servizi":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio


def cinque():
    vita=3
    print
    for x in range(3):
        print "Che cos'è l'IVA?"
        print "a - Imposta sul valore aumentati"
        print "b - Imposta sul valore acquistato"
        print "c - Imposta sul valore accumulato"
        print "d - Imposta sul valore aggiunto"
        risposta=raw_input("Risposta: ")
        if risposta=="d" or risposta=="D" or risposta=="Imposta sul valore aggiunto" or risposta=="imposta sul valore aggiunto":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio


def sei():
    vita=3
    print
    for x in range(3):
        print "Che cos'è l'impressionismo?"
        print "a - Una corrente artistica"
        print "b - Una tecnica cinematografica"
        print "c - Una tecnica giornalistica"
        print "d - Un movimento politico"
        risposta=raw_input("Risposta: ")
        if risposta=="a" or risposta=="A" or risposta=="Una corrente artistica" or risposta=="una corrente artistica":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio



def sette():
    vita=3
    print
    for x in range(3):
        print "Nel SI (sistema internazionale), l'intensità luminosa, si misura in:"
        print "a - Lumen"
        print "b - Henry"
        print "c - Lux"
        print "d - Candele"
        risposta=raw_input("Risposta: ")
        if risposta=="d" or risposta=="D" or risposta=="candele" or risposta=="Candele" or risposta=="CANDELE":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio



def otto():
    vita=3
    print
    for x in range(3):
        print "Qual è l'album musicale più venduto nella storia?"
        print "a - Thriller di Michael Jackson"
        print "b - The Wall dei Pink Floyd"
        print "c - Nel blu dipinto di blu di Domenico Modugno"
        print "d - Pop degli U2"
        risposta=raw_input("Risposta: ")
        if risposta=="a" or risposta=="A" or risposta=="Thriller di Michael Jackson" or risposta=="thriller di michael jackson":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio



def nove():
    vita=3
    print
    for x in range(3):
        print "Cos'è la forza centripeta?"
        print "a - Una delle componenti dell'accelerazione nel moto circolare e precisamente è la componente normale rispetto alla traiettoria"
        print "b - Forza tangenziale che si crea in seguito ad una rapida rotazione attorno ad un asse"
        print "c - Variazione della velocità lineare nell'arco di tempo di 2 secondi"
        print "d - Nessuna delle precedenti"
        risposta=raw_input("Risposta: ")
        if risposta=="a" or risposta=="A" or risposta=="Una delle componenti dell'accelerazione nel moto circolare e precisamente è la componente normale rispetto alla traiettoria" or risposta=="una delle componenti dell'accelerazione nel moto circolare e precisamente è la componente normale rispetto alla traiettoria":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio



def dieci():
    vita=3
    print
    for x in range(3):
        print "Che cosa accadde il 22 Agosto 1864?"
        print "a - Fu firmata la Convenzione di Ginevra"
        print "b - Fu inventata la penicillina"
        print "c - Nobel istituì il Premio Nobel"
        print "d - Il Cavour proclamò la nascita del regno d'Italia"
        risposta=raw_input("Risposta: ")
        if risposta=="a" or risposta=="A" or risposta=="Fu firmata la Convenzione di Ginevra" or risposta=="fu firmata la convenzione di ginevra":
            print "Risposta esatta!"
            global punteggio
            punteggio=punteggio+5
            break
        else:
            vita=vita-1
            global punteggio
            punteggio=punteggio-2
            print "Risposta errata."
            print "Hai a disposizione ancora",vita,"tentativi"
    print "Punti totali",punteggio

def fine():
    print "Bene, il quiz è terminato."
    nome=raw_input("Potresti dirmi il tuo nome?")
    print "Bravo %s, hai totalizzato %d punti" %(nome,punteggio)
il programma non è formattato bene sul forum, ma sul mio programma è indentato dove serve.

Ultima modifica di Saverio92 : 23-08-2010 alle 23:48.
Saverio92 è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2010, 19:51   #2
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
Nei forum ci sono i tag CODE apposta per evitare questi casini. Indenta il codice e ne riparliamo. E chiedi in modo più preciso cosa non capisci o cosa ti serve, cosi risparmiamo tutti del tempo prezioso.
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2010, 23:49   #3
Saverio92
Member
 
Iscritto dal: Nov 2007
Messaggi: 152
Quote:
Originariamente inviato da Ryuzaki_Eru Guarda i messaggi
Nei forum ci sono i tag CODE apposta per evitare questi casini. Indenta il codice e ne riparliamo. E chiedi in modo più preciso cosa non capisci o cosa ti serve, cosi risparmiamo tutti del tempo prezioso.
ho aggiustato con i tag code. praticamente vorrei che le domande inserite nelle funzioni comparissero a scermo casualmente. e poi se ad esempio inserisco 20 domande vorrei che ne uscissero solo 10 a caso. con la funzione random e le funzioni posso farlo?
Saverio92 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 01:05   #4
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
Suggerimento: random.choice()
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 10:49   #5
Saverio92
Member
 
Iscritto dal: Nov 2007
Messaggi: 152
Quote:
Originariamente inviato da Ryuzaki_Eru Guarda i messaggi
Suggerimento: random.choice()
ho fatto una prova rd ho inserito questi comandi

Codice:
inizio()
a=(uno(),due(),tre())
random.choice(a)
fine()
ma non mi da le domande in ordine casuale ma in ordine. consigli?
Saverio92 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 11:13   #6
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
In questo modo tu scegli casualmente la *funzione* non le domande *dentro la funzione*. Se vuoi le domande in modo casuale, inseriscile in una lista(*dentro le funzioni*) e le estrai con random.choice(). Ti servono dieci domande? Allora:
Codice:
for domanda in range(10):
    print random.choice(domande)
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 12:10   #7
Saverio92
Member
 
Iscritto dal: Nov 2007
Messaggi: 152
Quote:
Originariamente inviato da Ryuzaki_Eru Guarda i messaggi
In questo modo tu scegli casualmente la *funzione* non le domande *dentro la funzione*. Se vuoi le domande in modo casuale, inseriscile in una lista(*dentro le funzioni*) e le estrai con random.choice(). Ti servono dieci domande? Allora:
Codice:
for domanda in range(10):
    print random.choice(domande)
quindi dovrei modificare anche il codice dentro le funzioni? scusa ma sono un niubbo in materia :-)
Saverio92 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:19   #8
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
Se le domande sono dentro le funzioni, come nel tuo caso, e tu le vuoi estratte in modo casuale, allora devi ovviamente modificare le funzioni. Ti ho fatto l'esempio poco sopra, prova
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2010, 14:23   #9
Saverio92
Member
 
Iscritto dal: Nov 2007
Messaggi: 152
Quote:
Originariamente inviato da Ryuzaki_Eru Guarda i messaggi
Se le domande sono dentro le funzioni, come nel tuo caso, e tu le vuoi estratte in modo casuale, allora devi ovviamente modificare le funzioni. Ti ho fatto l'esempio poco sopra, prova
io ho creato una funzione per ogni domanda perchè ci sono anche le istruzioni se la risposta è sbagliata o esatta
Saverio92 è offline   Rispondi citando il messaggio o parte di esso
Old 25-08-2010, 13:54   #10
Ryuzaki_Eru
Senior Member
 
L'Avatar di Ryuzaki_Eru
 
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4131
Quel codice è scritto malissimo, ma imparerai con il tempo. Se tu devi fare un quiz ci sono molti modi per poterlo implementare. Come prima cosa tutte queste funzioni non ti servono, puoi anche scriverlo in modo procedurale. Metti le domande con le risposte in un file ad esempio:

Codice:
Domanda Risposta
apri il file, lo leggi, dividi domande e risposte usando join e poi le visualizzi in modo casuale. Per vedere se è giusta o sbagliata basta un if e puoi piazzare tutto dentro un while, in modo che il gioco continua fin quando l'utente non digita ad esempio "esci".
Ryuzaki_Eru è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2012, 14:20   #11
tonino73
Junior Member
 
Iscritto dal: Jun 2000
Messaggi: 1
switch

si può usare una sorte di switch fatto con gli if.. elif.. else.. usando la funzione randint(a,b) che restituisce in modo casuale un intero nell'intervallo (a,b) compresi, facendo dei controlli se il numero casuale è già uscito (man mano che li estrae li metti in una lista e controlli se uguale), quindi nell'if richiami la def corrispondente al numero ed in fine un contatore nel while che si ferma a 10 domande sicuramente diverse. Spero di essere stato chiaro.
tonino73 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Reddit punterà sull'AI per miglio...
Samsung ha obiettivi molto ambiziosi per...
I produttori non faranno sconti sulle me...
Ubisoft potrebbe cedere pezzi se il pian...
Qualcomm potrebbe utilizzare una tecnolo...
Starfield per Nintendo Switch 2 potrebbe...
Un MacBook Pro a -300€, i MacBook Air M4...
Amazon abbassa i prezzi sugli iPhone: sc...
Amazon, ancora sconti sugli smartphone A...
iPhone Air 2 'riciclerà' alcuni c...
Offerta Amazon da non perdere: lo speake...
Nioh 3 debutta alla grande su Steam: pri...
Al centro della Via Lattea ci potrebbe e...
Elon Musk ora guarda alla Luna: SpaceX p...
La Cina ha lanciato nuovamente lo spazio...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v