Eli ohjelmointikielenä on python ja kysymys kuuluu seuraavasti: Mun pitäs saada tekstiä tulostettua while-loopissa niin, ettei se tee jokaista päivitettyä tietoa omalle riville, vaan korvaa uuden tiedon vanhalla. Mitenköhän tämä onnistuu?
Esimerkiksi näin:
i = 0 while i < 10: i += 1 print "\rsilmukka numero", i,
jossa \r
on rivinalkuunpalautusmerkki.
Mulla toi ei toimi... Nyt se pistää ne menemään vaakasuunnassa ja heittaa jonkun
neliön sanojen eteen...
Jos tarkoitus on tulostaa reaaliajassa tekstiä ruudulle niin standarditulostusvirta pitää flushata välillä. Edellä esitelty esimerkki on toimiva, mutta se ei päivitä tietoja ruudulle kun vasta suorituksen lopuksi.
Tämä esimerkiksi laskee yhdestä kymmeneen ja päivittää tilanteen reaaliajassa:
from sys import stdout from time import sleep i = 1 while i <= 10: stdout.write('\r%d' % i) stdout.flush() sleep(0.3) i += 1 stdout.write('\n')
Ompa erikoinen kysymyksen asettelu. Jos sen ottaa kirjaimellisesti, niin halutaan jokaisessa while toistossa pyyhkiä edellinen tulostus pois, siitä windowsin ikkunasta tms josta tuloste luetaan, ja sitten kirjoittaa samaan kohtaan uusi tuloste.
Jos halutaan vaan tulostaa ilman automaattista rivinvaihtoa niin jmpeen esimerkin mukaan pilkku print käskyn jälkeen. Itte en tosin ymmärtänyt tota rivinpalautusta, joka vaan aiheutti sen ettei mitään tulostettu.
Pythonin dokumentaatiosta löytyy myös tommonen "ASCII Backspace" joka tulee siis \b ohjausmerkkilöisellä. Vissiin ne Tritonin "neliöt" tulostetaan meillä päin tolla. Arvaisin että mulla ja Tonilla on näppäimistökartta määritelty eritavalla. Ehkä. Kokeile huviksesi myös \f :ää. Tulostivat jänniä merkkejä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.