Es gribētu izveidot vairākus paziņojumus, kas sniedz standarta izvades rezultātus, neredzot jaunas rindkopas starp paziņojumiem.
Konkrēti, pieņemsim, ka man ir:
for item in range(1,100):
print item
Rezultāts ir:
1
2
3
4
.
.
.
Kā panākt, lai tā vietā tas izskatītos šādi:
1 2 3 4 5 ...
Vēl labāk, vai ir iespējams izdrukāt vienu skaitli pār pēdējo skaitli, lai uz ekrāna vienlaicīgi būtu tikai viens skaitlis?
Mainīt print item
uz:
print item,
programmā Python 2.7print(item, end=" " ")
Python 3 lietotnēJa datus vēlaties izdrukāt dinamiski, izmantojiet šādu sintaksi:
print(item, sep=' ', end='', flush=True)
in Python 3Izmantojiet print item,
, lai drukas paziņojumā izlaistu jauno rindiņu.
Python 3 ir print(item, end=" ")
.
Ja vēlaties, lai katrs skaitlis tiktu attēlots vienā un tajā pašā vietā, izmantojiet, piemēram (Python 2.7):
to = 20
digits = len(str(to - 1))
delete = "\b" * (digits + 1)
for i in range(to):
print "{0}{1:{2}}".format(delete, i, digits),
Python 3 ir mazliet sarežģītāk; šeit ir nepieciešams izskalot sys.stdout
, pretējā gadījumā netiks izdrukāts nekas līdz cilpas beigām:
import sys
to = 20
digits = len(str(to - 1))
delete = "\b" * (digits)
for i in range(to):
print("{0}{1:{2}}".format(delete, i, digits), end="")
sys.stdout.flush()
In [9]: print?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function print>
Namespace: Python builtin
Docstring:
print(value, ..., sep=' ', end='\n', file=sys.stdout)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.