Problemi con ciclo While - neofita

di il
5 risposte

Problemi con ciclo While - neofita

Salve a tutti,
sono un neofita del forum e di Python. Lo sto apprendendo da autodidatta e ho iniziato ad esercertirami con quello che ho appreso.
Mi trovo davanti ad un problema che non riesco a risolvere, e vorrei l'aiuto di qualcuno più esperto di me (sicuramente sarà una cavolata). Non mi dà nessun errore, ma non funziona
Vi incollo il codice,
Grazie del vostro tempo.
Contenuto = input('Digita quello che vuoi scrivere all\'interno del tuo file: ')
Confermi = input(f'Perfetto! Vuoi scrivere {Contenuto} all\'interno del tuo nuovo file? S/N ')
while Confermi == "n" or Confermi == "N": 
    Contenuto = input('Digita nuovamente quello che vuoi scrivere all\'interno del tuo file: ')
    Confermi = input(f'Perfetto! Vuoi scrivere {Contenuto} all\'interno del tuo nuovo file? S/N ')
    if Confermi == "s" or Confermi == "S":
	file1 = open("D:\\Desktop\\esempio1.txt","w")
	file1.write(Contenuto)
	file1.close()
    
import os
Nuovo_nome_file = input('Come vuoi chiamare il tuo file? ')
Confermi_file = input(f'Perfetto! Il file con il contenuto da te scritto si chiamerà {Nuovo_nome_file}, Ok? S/N ')
while Confermi_file == "N" or Confermi_file == "n" :
    Nuovo_nome_file = input('Ok, riproviamo, come lo vuoi chiamare? ')
    Confermi_file = input(f'Perfetto! Il file con il contenuto da te scritto si chiamerà {Nuovo_nome_file}, Ok? S/N ')
    if Confermi_file == "s" or Confermi_file == "S":
	os.rename("D:\\Desktop\\esempio1.txt", f"{Nuovo_nome_file}.txt")
	print (f'Abbiamo finito, hai scritto {Contenuto} all\'interno di {Nuovo_nome_file}')

5 Risposte

  • Re: Problemi con ciclo While - neofita

    Il ciclo while itera finché la condizione è vera. Quindi
    while Confermi == "n" or Confermi == "N": 
    ripeterà il ciclo finché sarà vera quella condizione, cioè se la variabile 'Confermi' sia 'N' o 'n'. Se vuoi che il ciclo venga ripetuto finché l'utente non prema 'n' da dentro il ciclo devi cambiare sistema, ad esempio:
    continue_while = True
    while continue_while:
    	....
    	t = input(".... S/N")
    	if t == "N" || t == "n":
    		continue_while = False
    
  • Re: Problemi con ciclo While - neofita

    Perfetto, grazie!
    In realta, vorrei che esca dal ciclo premendo S, ovvero conferma che va bene. Ho sostituito N con S e funziona.
    Grazie mille!
    Avrei un'altra domanda, ma prima vorrei provare a risolvere da me, quindi, intanto, ti ringrazio
  • Re: Problemi con ciclo While - neofita

    Eccomi, sono tornato. Allora, ti spiego cosa vorrei fare, perchè io mi sto complicando un po' la vita, secondo me!
    Vorrei creare un piccolo script (mi sto esercitando), dove viene richiesto di scrivere un testo e poi la conferma:
    - Se è S, continua
    - Se è N, ripete il messaggio in cui chiede di digitare il messaggio
    - Se non né N, né S, ti avverte che devi necessariamente rispondere con N o S.

    Ti incollo quello che ho fatto
    Contenuto = input('Digita quello che vuoi scrivere all\'interno del tuo file: ')
    Confermi = input(f'Perfetto! Vuoi scrivere "{Contenuto}" all\'interno del tuo nuovo file? S/N \n***Ricorda di rispondere solo con S(sì) o N(no)*** ')
    if Confermi == "s" or Confermi == "S":
        file1 = open("D:\\desktop\\esempio1.txt","w")
        file1.write(Contenuto)
        file1.close()
    else:
        variabile_true = True
        while variabile_true: 
                Contenuto = input('Digita nuovamente quello che vuoi scrivere all\'interno del tuo file: ')
                Confermi = input(f'Perfetto! Vuoi scrivere "{Contenuto}" all\'interno del tuo nuovo file? S/N \n***Ricorda di rispondere solo con S(sì) o N(no)*** ')
                if Confermi == "s" or Confermi == "S":
                    variabile_true = False
    file1 = open("D:\desktop\\esempio1.txt","w")
    file1.write(Contenuto)
    file1.close() 
  • Re: Problemi con ciclo While - neofita

    Ho semplificato un po':
    bEsterno = True
    file1 = open("D:/desktop/esempio1.txt","w+")
    while bEsterno:
        Contenuto = input("Digita quello che vuoi scrivere all'interno del tuo file: ")
        print("Perfetto! Vuoi scrivere '{0}' all'interno del tuo nuovo file? S/N".format(Contenuto))
        conferma = input("***Ricorda di rispondere solo con S(sì) o N(no)*** ")
        bTest = True
        while bTest:
            if conferma in "sS":
                file1.write(Contenuto + "\n")
                bTest = False
            else:
                if conferma not in "nN":
                    conferma = input("***Devi rispondere con S o N!*** ")
                else:
                    if conferma in "nN":
                        bEsterno = False
                        bTest = False
    file1.close()
    In pratica ci sono due cicli while: quello più esterno itera sull'input e sulla scrittura delle linee. Quello più interno sulla correttezza delle risposte. Entrambi sono gestiti con delle variabili booleane, che vengono modificate in base a quanto viene letto in input.
  • Re: Problemi con ciclo While - neofita

    Grazie mille!
Devi accedere o registrarti per scrivere nel forum
5 risposte