Jak mogę zastąpić wyjście wydruku z innym konkretnym wyjściem drukowania? Na przykład: Drukuj ("Nadpisz tę linię", End = "R") Drukuj ("Nie chcę nadpisać żadnej linii") ...

0
Aarav Prasad 27 marzec 2021, 11:26

3 odpowiedzi

Najlepsza odpowiedź

Możesz użyć Sekwencje ucieczki ANSI, o ile twój terminal je obsługuje (Tak jest w Linux, nie jestem pewien co do Windows)

W szczególności interesujące z tego problemu są:

  • \033[<N>A - Przesuń kursor w górę n
  • \033[<N>B - Przesuń kursor w dół N

Możesz wydrukować pierwsze dwie linie normalnie, a następnie trzeci przesuń się w górę 2 linie, wydrukuj go (to wydrukuje nową linię i przesunie kursor do drugiej linii), przesuń 1 linię i kontynuuj kod. Wymieniłem niektóre opóźnienia w kodzie, aby efekt był widoczny:

print("Overwrite this line")
time.sleep(1)
print("I do not want to overwrite any line")
time.sleep(1)
print("\033[2AI want to overwrite the first line\033[1B")
3
Dario Petrillo 27 marzec 2021, 09:13

Do tego celu użyj escape sequence \r. I na czekanie użyj time.sleep

import time

print("Overwrite this line", end="")
time.sleep(10)
print("\rI want to overwrite the first line")
print("I do not want to overwrite any line")

Dla bardziej precyzyjnego wyniku wait for key press. i Sprawdź ten kod:

import msvcrt as m
def wait():
    m.getch()

print("Overwrite this line", end="")
wait()
print("\rI want to overwrite the first line")
print("I do not want to overwrite any line")
1
Exploore X 27 marzec 2021, 09:01

Musisz użyć oświadczeń warunkowego. Jeśli instrukcja na przykład: wybór = wejście ("Co chcesz wyświetlić? 1 lub 2 ')

Jeśli wybór == '1', a następnie: Drukuj ("Chcę nadpisać pierwszą linię") indziej: "Nie chcę zastąpić żadnej linii")

Czy to odpowie na twoje pytanie? Jeśli nie, opracuj.

0
Franco Uy Such 27 marzec 2021, 08:41