2016-12-23 10 views
0

Я пытаюсь выяснить, как напечатать одну строку строки при использовании цикла for. Если есть другие способы, о которых вы знаете, я был бы признателен за помощь. Спасибо. Также попробуйте отредактировать мой код!Как сделать backspace в python

times = int(input("Enter a number: ")) 
print(times) 
a = 0 
for i in range(times+1): 
    print("*"*i) 
    a += i 
print("Total stars: ") 
print(a) 
print("Equation: ") 
for e in range(1,times+1): 
    print(e) 
    if e != times: 
     print("+") 
    else: 
     pass 

Out:

Enter a number: 5 
* 
** 
*** 
**** 
***** 
Equation: 
1 
+ 
2 
+ 
3 
+ 
4 
+ 
5 

Как сделать уравнение в одной единственной линии, как это:

1+2+3+4+5 
+1

ищет '\ b'? http://stackoverflow.com/a/18320507/1248974 – davedwards

+1

Это, вероятно, то, что вы ищете - http://stackoverflow.com/questions/11266068/python-avoid-new-line-with-print-command –

+2

Кажется, вы случайно задаете 2 вопроса. Первое: как сделать backspace, на который отвечает выше ('\ b'). Другой - ваш реальный вопрос ... потому что каждый отпечаток находится на собственной линии. Вы хотели бы построить строку и напечатать ее один раз, а не печатать несколько. Если вы используете java, print делает system.out.println, тогда как вы хотите печатать. Так что сначала создайте свою строку, а затем просто распечатайте ее после всех итераций – Fallenreaper

ответ

1

Я не думаю, что вы можете сделать "забой" после того, как вы напечатали. По крайней мере, удаление из терминала не будет сделано очень легко. Но вы можете создать строку перед печатью:

times = int(input("Enter a number: ")) 
print(times) 
a = 0 
for i in range(times+1): 
    print("*"*i) 
    a += i 
print("Total stars: ") 
print(a) 
print("Equation: ") 
equation_string = "" 
for e in range(1,times+1): 
    equation_string += str(e) 
    if e != times: 
     equation_string += "+" 
    else: 
     pass 
print(equation_string) 

В принципе, то, что происходит, вы храните временное уравнение в equation_str поэтому он построен так:

1 
1+ 
1+2 
1+2+ 
... 

И тогда вы печатаете equation_str раз это полностью построен. Выход модифицированной программы - это

Enter a number: 5 
5 

* 
** 
*** 
**** 
***** 
Total stars: 
15 
Equation: 
1+2+3+4+5 

Не стесняйтесь оставлять комментарии, если что-то неясно.

0

Вместо оригинала цикла для печати каждого номера, попробуйте следующее:

output = '+'.join([str(i) for i in range(1, times + 1)]) 
print(output) 

Объяснение:

[str(i) for i in range(1, times + 1)] список понимание, что возвращает список всех чисел, преобразуется в строки так что мы можем их распечатать.

'+'.join(...) соединяет каждый элемент вашего списка, используя + между элементами.

Альтернативно:

Если вы хотите простой модификации исходного кода, вы можете просто подавить перевод строки из каждого оператора печати с ключевым словом В параметре end, и установить это в пустую строку:

print(e, end='') 

(Обратите внимание, что я обратился к подразумеваемый вопрос, а не «как мне сделать забой» вопрос)

0

Слишком долго для комментариев, так что я отправлю Вот. Параметры форматирования python могут пригодиться, если у вас есть последовательность, которую вы хотите отформатировать и распечатать. Рассмотрим следующее ...

>>> num = 5  # number of numbers to generate 
>>> n = num-1 # one less used in generating format string 
>>> times = [i for i in range(1,num+1)] # generate your numbers 
>>> ("{}+"*n + "{}=").format(*times)  # format your outputs 
'1+2+3+4+5=' 

Таким образом, хотя это не ответ на ваш вопрос, вы можете увидеть, что списочные могут быть введены в игру, чтобы сгенерировать список значений, которые затем могут быть использованы в формате поколение. Строку формата можно также создать с помощью l.c. но он становится довольно грязным, когда вы хотите включить строковые элементы, такие как + и =, как показано в приведенном выше примере.