python 3.x перезаписать предыдущую строку терминала

Я написал простую программу для расчета среднего результата броска костей (довольно бессмысленно, но с чего-то надо начинать ;P):

import random, time
from random import randrange

count = 0
total = 0
one_count = 0 

for x in range(10000000):
    random = randrange(1,7)
    count = count + 1
    total = total + random
    average = total / count
    percentage = one_count / count * 100
    if random == 1:
        one_count = one_count + 1
    print("the percentage of ones occurring is", percentage, "and the average outcome is", average)
#   time.sleep(1)

Чтобы очистить его, я хочу, чтобы вывод перезаписывал предыдущую строку. Я перепробовал все, что мог найти, но единственное, что мне удалось сделать, это напечатать ту же строку, не стирая предыдущее содержимое, изменив последнюю строку на:

print("the percentage of ones occuring is", percentage, "and the average outcome is", average, "/// ", end="")

который выводит:

the percentage of ones occuring is 0.0 and the average outcome is 4.0 /// the percentage of ones occuring is 0.0 and the average outcome is 4.5 /// the percentage of ones occuring is 0.0 and the average outcome is 3.6666666666666665 /// 

Любые идеи?


person plzHalp    schedule 24.11.2014    source источник


Ответы (2)


Добавьте \r в конце. Таким образом, следующая написанная вами строка будет начинаться с начала предыдущей строки. А затем сбросить вывод, чтобы он сразу отображался.

Примечание. Если следующая строка короче, оставшиеся символы останутся.

person spalac24    schedule 24.11.2014
comment
В этом случае это, вероятно, что-то, связанное с вашим терминалом. Затем вы должны увидеть curses - person spalac24; 25.11.2014
comment
Я не могу импортировать проклятия: Traceback (most recent call last): File "/home/jakob/workspace/test/test.py", line 2, in <module> import curses File "/usr/local/lib/python3.4/curses/__init__.py", line 13, in <module> from _curses import * ImportError: No module named '_curses' - person plzHalp; 25.11.2014
comment
Вы добавляете случайный _ в начале. Используйте только from curses import * - person spalac24; 25.11.2014
comment
нет, _curses импортируются curses: """curses The main package for curses support for Python. Normally used by importing the package, and perhaps a particular module inside it. import curses from curses import textpad curses.initscr() ... """ from _curses import * import os as _os import sys as _sys ... извините за отсутствие форматирования :) - person plzHalp; 25.11.2014

используйте 1_:

for x in range(100000):
    rnd = randrange(1,7) # don't use random
    count += 1
    total = total + rnd
    average = total / count
    percentage = one_count / count * 100
    if rnd == 1:
        one_count += 1
    print("the percentage of ones occurring is {} and the average outcome is {}".format(percentage,average),end='\r')
    time.sleep(.1)

С другой стороны, использование total = total + random не очень хорошая идея, вы импортируете модуль random и используете random в качестве имени переменной.

person Padraic Cunningham    schedule 24.11.2014
comment
Вы забыли изменить random в строке 7 на rnd, поэтому я потратил 10 минут на устранение неполадок, почему это не работает должным образом :P В любом случае, я пытался добавить end=/r раньше, и это все еще не работает, ничего не меняется ... :/ - person plzHalp; 25.11.2014
comment
хорошо, вы получили хороший урок, почему бы не использовать имена модулей в качестве имен переменных;), для меня он печатает весь вывод в одной строке. Вы также используете time.sleep? - person Padraic Cunningham; 25.11.2014
comment
Я хочу сказать спасибо, но поле для комментариев говорит мне не делать этого :) - person plzHalp; 25.11.2014
comment
Я только начал использовать PyDev, моя ОС — Linux Mint. - person plzHalp; 25.11.2014
comment
Терминал должен быть ограничен как бездействующий. Можете ли вы запустить его в другом месте? - person Padraic Cunningham; 25.11.2014
comment
Только что запускал на телефоне, никаких изменений. - person plzHalp; 25.11.2014
comment
на вашем телефоне? у вас нет подходящего tty для его запуска? - person Padraic Cunningham; 25.11.2014
comment
как я уже сказал, я запустил его с терминала, я просто хотел посмотреть, обрабатывает ли мой телефон по-другому :) - person plzHalp; 25.11.2014