Odliczanie z zastępowaniem liczby

0

Cześć, taki problem.

Mam pętle while:

i = 1
while i <101:
  print ("Loading", i, "%")
  i += 1

Wynikiem jest odliczanie w kolejnych wierszach:
Loading 1 %
Loading 2 %
...
Loading 100 %

 print ("Loading", i, "%")

W jaki sposób to ugryźć, aby po uruchomieniu wszystko pozostało w tym samym wierszu, a zmieniała się jedynie wartość i?

2
import time

for i in range(101):
    print("\rLoading {}%".format(i), end='')
    time.sleep(0.01)
print()

Ważny jest znak końca karetki (\r), dzięki niemu, cofamy się na początek linijki (i nie przechodzimy do nowej, dzięki end='')

0

@jackweb właśnie znalazłem podobną podpowiedź gdzieś w Internecie. Dzięki.

Po dodaniu samego end='\r' program odlicza w tej samej linii.

i = 1
while i <101:
  print ("Loading", i, "%", end='\r')
  i += 1
0

@jackweb
W przypadku gdy wrzucam to w funkcję loading, po jej wykonaniu - po odliczeniu do 100% program pozostaje w tej samej linii.

def loading():
  import time
  for i in range(101):
    print("\rLoading {} %".format(i), end ='',)
    time.sleep(0.01)

loading()

W efekcie, po dodaniu np. kolejnego printa:

def loading():
  import time
  for i in range(101):
    print("\rLoading {} %".format(i), end ='',)
    time.sleep(0.01)

loading()
print ("test")

Otrzymuje Loading 100%test
W jaki sposób najprościej przejść teraz do kolejnej linii? Podejrzewam, że istnieje lepsze rozwiązanie niż to:

def loading():
  import time
  for i in range(101):
    print("\rLoading {} %".format(i), end ='',)
    time.sleep(0.01)

loading()
print()
print ("test")
1
def loading():
  import time
  for i in range(101):
    print("\rLoading {} %".format(i), end ='',)
    time.sleep(0.01)
  print()
0

Wiedziałem, że dzwonią, nie wiedziałem gdzie. Podziękował.

1 użytkowników online, w tym zalogowanych: 0, gości: 1