나는 그것을하고 싶습니다 파이썬. 이 예제에서하고 싶은 것씨:
C에서 :
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
산출:
..........
파이썬에서 :
>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .
파이썬 print
에서 \n
또는 공백 을 추가하면 어떻게 피할 수 있습니까? 자, 이것은 단지 예일뿐입니다. 먼저 문자열을 만든 다음 인쇄 할 수 있다고 말하지 마십시오. 문자열을 “추가”하는 방법을 알고 싶습니다 stdout
.
답변
Python 3에서는 함수 의 sep=
및 end=
매개 변수를 사용할 수 있습니다 print
.
문자열 끝에 줄 바꿈을 추가하지 않으려면 :
print('.', end='')
인쇄하려는 모든 함수 인수 사이에 공백을 추가하지 않으려면 다음을 수행하십시오.
print('a', 'b', 'c', sep='')
어떤 문자열이든 매개 변수에 전달할 수 있으며 두 매개 변수를 동시에 사용할 수 있습니다.
버퍼링에 문제가있는 경우 flush=True
키워드 인수 를 추가하여 출력을 플러시 할 수 있습니다 .
print('.', end='', flush=True)
파이썬 2.6 및 2.7
Python 2.6 print
에서 __future__
모듈을 사용하여 Python 3 에서 함수를 가져올 수 있습니다 .
from __future__ import print_function
위의 Python 3 솔루션을 사용할 수 있습니다.
그러나 Python 2에서 가져온 함수 flush
버전 에서는 키워드를 사용할 수 없습니다 . 파이썬 3, 구체적으로 3.3 이상에서만 작동합니다. 이전 버전에서는을 호출하여 수동으로 플러시해야합니다 . 또한이 가져 오기를 수행하는 파일의 다른 모든 인쇄 문을 다시 작성해야합니다.print
__future__
sys.stdout.flush()
아니면 사용할 수 있습니다 sys.stdout.write()
import sys
sys.stdout.write('.')
전화해야 할 수도 있습니다
sys.stdout.flush()
보장하기 위해 stdout
즉시 플러시됩니다.
답변
Guido Van Rossum의이 링크에서 설명한 것처럼 간단해야합니다.
Re : ac / r없이 어떻게 인쇄합니까?
http://legacy.python.org/search/hypermail/python-1992/0115.html
인쇄 할 수 있지만 캐리지 리턴이 자동으로 추가되지는 않습니까?
예, 마지막 인수 뒤에 쉼표를 추가하여 인쇄하십시오. 예를 들어,이 루프는 공백으로 구분 된 행에 숫자 0..9를 인쇄합니다. 마지막 줄 바꿈을 추가하는 매개 변수가없는 “print”에 유의하십시오.
>>> for i in range(10):
... print i,
... else:
... print
...
0 1 2 3 4 5 6 7 8 9
>>>
답변
참고 :이 질문의 제목은 “파이썬에서 어떻게 printf?”
사람들은 제목을 기반으로 여기를 찾게 될 수도 있기 때문에 Python은 printf 스타일 대체도 지원합니다.
>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
... print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three
문자열 값을 직접 곱할 수 있습니다.
>>> print "." * 10
..........
답변
python2.6 +에 python3 스타일 인쇄 기능을 사용하십시오 (동일한 파일에서 기존 키워드로 인쇄 된 명령문도 손상시킵니다).
# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
print('.', end='')
모든 python2 인쇄 키워드를 망치지 않으려면 별도의 printf.py
파일을 만드십시오.
# printf.py
from __future__ import print_function
def printf(str, *args):
print(str % args, end='')
그런 다음 파일에서 사용하십시오.
from printf import printf
for x in xrange(10):
printf('.')
print 'done'
#..........done
printf 스타일을 보여주는 더 많은 예제
printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000
답변
같은 줄에 인쇄하는 방법 :
import sys
for i in xrange(0,10):
sys.stdout.write(".")
sys.stdout.flush()
답변
새로운 (Python 3.x부터) print
함수에는 end
끝 문자를 수정할 수 있는 선택적 매개 변수가 있습니다.
print("HELLO", end="")
print("HELLO")
산출:
안녕 안녕
도 있습니다 sep
구분을 위해 :
print("HELLO", "HELLO", "HELLO", sep="")
산출:
안녕 안녕 안녕
Python 2.x에서 이것을 사용하려면 파일 시작 부분 에 이것을 추가 하십시오.
from __future__ import print_function
답변
functools.partial을 사용하여 printf라는 새로운 함수 만들기
>>> import functools
>>> printf = functools.partial(print, end="")
>>> printf("Hello world\n")
Hello world
기본 매개 변수로 함수를 쉽게 감쌀 수 있습니다.