Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743

    [python] output del testo che non scorra

    Ho fatto un programmino che ci può mettere parecchio tempo per completare quello che deve fare e mi piacerebbe visualizzare la percentuale di esecuzione.

    Come si fa a scrivere a schermo sempre nello stesso punto senza che le varie percentuali mi escano una dietro l'altra o vadano sempre a capo?
    Errare humanum est, perseverare ovest

  2. #2
    Puoi usare il carattere \r per tornare ad inizio riga e sovrascrivere quindi il testo appena scritto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Puoi usare il carattere \r per tornare ad inizio riga e sovrascrivere quindi il testo appena scritto.
    non funziona
    Errare humanum est, perseverare ovest

  4. #4
    Vedere il codice.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Vedere il codice.
    import time
    x = 0
    while x < 10:
    x = x + 1
    time.sleep(.5)
    print x,'\r'

    import time
    x = 0
    while x < 10:
    x = x + 1
    time.sleep(.5)
    print '\r',x

    import time
    x = 0
    while x < 10:
    x = x + 1
    time.sleep(.5)
    a = str(x) + ' \r'
    print a

    Errare humanum est, perseverare ovest

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    print aggiunge un ritorno a capo. '\r' riporta il cursore all'inizio della riga, ma in seguito a '\n' è all'inizio di una nuova riga e perciò non ha alcun significato.
    Da notare è che comunque il funzionamento di '\r' dipende dalla shell che usi...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Credevo che la virgola alla fine togliesse l'invio a capo

    Quindi come si può fare?
    Errare humanum est, perseverare ovest

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Grazie, ma da come ho capito è una soluzione per la versione 3 mentre cerco qualcosa per la 2.x

    avrei risolto così

    import time
    import sys

    for x in range(1,11):
    x = ' ' + str(x) + ' \r'
    sys.stdout.write(x)
    sys,stdout.flush()
    time.sleep(1)
    funziona ma il risultato non è un gran che, il cursore lampeggia e si sposta rendendo il tutto poco estetico
    Ultima modifica di carlo2002; 01-01-2014 a 20:24
    Errare humanum est, perseverare ovest

  10. #10
    Non mettere il '\r' subito dopo aver stampato, ma prima di stampare.
    codice:
    import time
    import sys
    
    for x in range(1,11):
        print '\r', x,
        sys.stdout.flush()
        time.sleep(1)
    (tra parentesi, il tag per postare codice è CODE, non QUOTE)
    Amaro C++, il gusto pieno dell'undefined behavior.

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.