Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: tekstin tulostus ja while-looppi

Triton [07.03.2009 19:33:13]

#

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?

jmp [07.03.2009 21:42:48]

#

Esimerkiksi näin:

i = 0
while i < 10:
    i += 1
    print "\rsilmukka numero", i,

jossa \r on rivinalkuunpalautusmerkki.

Triton [07.03.2009 22:41:23]

#

Mulla toi ei toimi... Nyt se pistää ne menemään vaakasuunnassa ja heittaa jonkun
neliön sanojen eteen...

trilog [07.03.2009 23:32:30]

#

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')

pipo [09.03.2009 00:01:10]

#

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ä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta