Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    7

    [Python]Ciclo While per ricominciare il programma.

    Salve , sto iniziando a programma con Python e sto leggendo "Appunti di Python".
    In un capitolo mi si chiede di fare un esercizio, ossia di prendere questo codice:

    codice:
    lunghezza = 0 
    larghezza = 0 
    while lunghezza<=0:
             lunghezza = input('Dammi la lunghezza del rettangolo:')
    while larghezza<=0:
             larghezza = input('Dammi la larghezza del rettangolo:') 
    area = lunghezza *  larghezza print "L'area del rettangolo è",area
    e di fare in modo che alla fine del programma si ponga all'utente la seguente domanda:"Vuoi calcolare l'area di un altro rettangolo? (s/n).

    Questo usando solo le istruzioni conosciute sino a questo momento, ossia IF e While.
    Ammetto di non esserci riuscito, sono solamente riuscito ad uscire dal programma rispondendo n, ma non sono riuscito a far ricominciare il programma.
    Come devo fare?

    Grazie in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    ti rispondo ma premetto che sono abituato a pascal quindi posso sbagliare sintassi

    codice:
    while risposta='si':
    lunghezza = 0 
    larghezza = 0 
    while lunghezza<=0:
             lunghezza = input('Dammi la lunghezza del rettangolo:')
    while larghezza<=0:
             larghezza = input('Dammi la larghezza del rettangolo:') 
    area = lunghezza *  larghezza print "L'area del rettangolo è",area
    
    risposta=input('vuoi calcolare l'area di un'altro rettangolo?)
    anche se non capisco perchè in input devi dare solo valori minori o uguali a 0, dovrebbe essere
    codice:
    while lunghezza>0:
             lunghezza = input('Dammi la lunghezza del rettangolo:')
    while larghezza>0:
             larghezza = input('Dammi la larghezza del rettangolo:')
    ma poi non dvrebbe farsi con if then? così continua fino a che non inserisci un numero minore o uguale a zero(come hai fatto tu) o maggiore(secondo il mio codice)

    ripeto che io sono legato al pascal, ma il concetto è quello

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    7
    Ciao,
    grazie per la risposta, non fare caso al simbolo , in realtà doveva essere <.
    Ho tentato come tu mi hai detto , ma non funziona.
    Allora ho tentato in questo modo,
    codice:
    lunghezza = 0
    larghezza = 0
    risposta="si"
    if risposta=="si":
        while lunghezza<=0:
            lunghezza = input('Dammi la lunghezza del rettangolo:')
        while larghezza<=0:
            larghezza = input('Dammi la larghezza del rettangolo:')
        area = lunghezza * larghezza
        print "L'area del rettangolo è",area
        risposta=raw_input("Vuoi continuare?")
        if risposta=="no":
             print""
    ma anche cosi non va....
    Uff.
    Originariamente inviato da Rising1
    ti rispondo ma premetto che sono abituato a pascal quindi posso sbagliare sintassi

    codice:
    while risposta='si':
    lunghezza = 0 
    larghezza = 0 
    while lunghezza<=0:
             lunghezza = input('Dammi la lunghezza del rettangolo:')
    while larghezza<=0:
             larghezza = input('Dammi la larghezza del rettangolo:') 
    area = lunghezza *  larghezza print "L'area del rettangolo è",area
    
    risposta=input('vuoi calcolare l'area di un'altro rettangolo?)
    anche se non capisco perchè in input devi dare solo valori minori o uguali a 0, dovrebbe essere
    codice:
    while lunghezza>0:
             lunghezza = input('Dammi la lunghezza del rettangolo:')
    while larghezza>0:
             larghezza = input('Dammi la larghezza del rettangolo:')
    ma poi non dvrebbe farsi con if then? così continua fino a che non inserisci un numero minore o uguale a zero(come hai fatto tu) o maggiore(secondo il mio codice)

    ripeto che io sono legato al pascal, ma il concetto è quello

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    bhe, certo, così non ripete mica tutto.

    mica se gli dici all'inizio che se risposta=si allora fa tutto quello finchè gli metti no.
    devi usare

    codice:
    risposta='si'
    while risposta='si':
    etc...
    risposta=imput(etc...)
    ovviamente adattalo con la sintassi di phyton che non so, ma togli poi quel if....=no: etc...

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    7
    Ok,
    ho provato cosi:

    codice:
    lunghezza = 0
    larghezza = 0
    risposta="si"
    while risposta=="si":
        while lunghezza<=0:
            lunghezza = input('Dammi la lunghezza del rettangolo:')
        while larghezza<=0:
            larghezza = input('Dammi la larghezza del rettangolo:')
        area = lunghezza * larghezza
        print "L'area del rettangolo è",area
        risposta=raw_input("Vuoi continuare?")
    mi restituisce questo:

    Dammi la lunghezza del rettangolo:12
    Dammi la larghezza del rettangolo:12
    L'area del rettangolo è 144
    Vuoi continuare?si
    L'area del rettangolo è 144
    Vuoi continuare?si
    L'area del rettangolo è 144
    Vuoi continuare?

    In pratica alla mia risposta "si", lui mi ritorna l'area e mi ripropone la domanda....., perché non torna all'inzio vistoche è un ciclo?ARGHH

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    non conosco python (l'avrò detto? ) ma per esempio in pascal si mette begin...end all'inizio e alla fine di ogni ciclo. Sarebbe:

    codice:
    while risposta=="si": *****BEGIN****
        while lunghezza<=0: *****BEGIN****
            lunghezza = input('Dammi la lunghezza del rettangolo:')******END******
        while larghezza<=0:*****BEGIN****
            larghezza = input('Dammi la larghezza del rettangolo:')******END******
        area = lunghezza * larghezza
        print "L'area del rettangolo è",area
        risposta=raw_input("Vuoi continuare?")
        ******END******
    (ovviamente con diversa formattazione)
    così riconosce le cose da ripetere, può essere che c'è da mettere qualcosa di simile?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    7
    No, purtroppo no, non ha questo tipo di istruzione per aprire e chiudere un ciclo..
    Comuque ti voglio ringraziare molto per l'impegno che ci stai mettendo pur non conoscendo Python, molto gentile ^_^

    Originariamente inviato da Rising1
    non conosco python (l'avrò detto? ) ma per esempio in pascal si mette begin...end all'inizio e alla fine di ogni ciclo. Sarebbe:

    codice:
    while risposta=="si": *****BEGIN****
        while lunghezza<=0: *****BEGIN****
            lunghezza = input('Dammi la lunghezza del rettangolo:')******END******
        while larghezza<=0:*****BEGIN****
            larghezza = input('Dammi la larghezza del rettangolo:')******END******
        area = lunghezza * larghezza
        print "L'area del rettangolo è",area
        risposta=raw_input("Vuoi continuare?")
        ******END******
    (ovviamente con diversa formattazione)
    così riconosce le cose da ripetere, può essere che c'è da mettere qualcosa di simile?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    7
    URRà!!!!!!
    Ci sono riuscito!!!Ecco come:

    codice:
    for x in range(40):
        print"********************************************************************************"
    
    
    
    print "***CALCOLA L'AREA DEL BLOCCO DI MARMO E IL NUMERO DI LASTRE CHE PUOI OTTENERE***"
    print "********************************************************************************"
    print
    start="n"
    
    while start=="n":
        Lung=0
        Alt=0
        Larg=0
        Lastra=0
        start=raw_input("Vuoi iniziare la sessione?s/n:")
        if start=="s":
            print ("Buon Lavoro!")
        else:
            break
        
        while Lung<=0:
            Lung=input("Immetti la lunghezza del blocco in cm:")
        while Alt<=0:
            Alt=input("Immetti l'altezza del blocco in cm:")
        while Larg<=0:
            Larg=input("Immetti la larghezza del blocco in cm:")
        while Lastra <=0:
            Lastra=input("Immetti lo spessore delle lastre che vuoi ottenere in cm:")
    
        Nlastre=Larg/Lastra
    
        Area=Lung * Alt
        
        print "----------------------------------------------------------------------"
        print "Il numero di lastre che puoi ottenere con questo blocco è:",Nlastre
        print "----------------------------------------------------------------------"
        print "L'area di questo blocco di marmo è",Area,"cm"
        print "----------------------------------------------------------------------"
    
        for y in range(5):
            print "*********************************************************************************"
        start=raw_input("Vuoi continuare?s/n:")
        if start=="s":
            start="n"
        else:
            break
    Adesso voglio solo sapere dagli esperti se come soluzione è accettabile, oppure si può fare meglio con le sole istruzioni if e while.

    Quello del rettangolo l'ho risolto in questo modo:

    codice:
    y="s"
    while y=="s":
        lunghezza = 0
        larghezza = 0
        y=raw_input("Vuoi calcolare l'area di un rettangolo? (s/n)")
        if y=="s":
            print""
        else:
            break
        while lunghezza<=0:
            lunghezza=input("Inserisci la lunghezza del rettangolo in cm:")
        while larghezza<=0:
            larghezza=input("Inserischi la larghezza del rettangolo in cm:")
            area=lunghezza*larghezza
            print "L'area del rettangolo è",area
        y=raw_input("Vuoi calcolare l'area di un nuovo rettangolo?(s/n)")
        if y=="n":
            break
        else:
            y="s"
    Ciao!

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    7
    Ne ho fatta anche una versione così, forse è più corretta che dite??

    codice:
    for x in range (5):
        print"************************************************************************************"
        print
        print"************************************************************************************"
        print
    
    
    start="y"
    
    while start=="y":
        print"***BUON LAVORO!***"
        print"******************"
        lunghezza=0
        larghezza=0
        spessore=0
        area=0
        slastra=0
        nlastre=0
        
    
        lunghezza=input("Scrivi la lunghezza della lastra in cm:")
        print"--------------------------------------------------"
        larghezza=input("Scrivi la larghezza della lastra in cm:")
        print"--------------------------------------------------"
        spessore=input("Scrivi lo spessore della lastra in cm:")
        print"--------------------------------------------------"
        slastra=input("Quanto sarà spessa la lastra che ti serve in cm?")
        print"--------------------------------------------------"
    
        area=lunghezza * larghezza
        nlastre=spessore/slastra
    
        print ("L'area della lastra è"),area,("cm,il numero di lastre che puo ottenere è:"),nlastre
        print"--------------------------------------------------"
        start=raw_input("Vuoi continuare?s/n:")
        if  start=="s":
            print"**********************************************"
            
            start="y"
        else:
            print"**ARRIVEDERCI!**"
            break

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.