2013-10-29 2 views
0

이 작은 문제는 해결할 수 없습니다.파이썬 - 공백

enter image description here

번째는 우측이다.

어떻게 공백없이 인쇄 할 수 있습니까?

def square(n): 
    for i in range(n): 
     for j in range(n): 
      if i==0 or j==0 or i==n-1 or j==n-1: print "*", 
      else: print "+", 
    print 

감사합니다.

+0

나는 그것을 인쇄하기 전에 문자열로 전체 라인을 구축 할 것입니다. 또는 파이썬 3을 사용하십시오. 여기서 "끝"을 " '''로 설정할 수 있습니다. –

답변

10

print에 쉼표를 더하면 안됩니다. 이 경우 쉼표는 개행 문자 대신 공백을 삽입합니다.

import sys 

def square(n): 
    for i in range(n): 
     for j in range(n): 
      if i==0 or j==0 or i==n-1 or j==n-1: sys.stdout.write("*") 
      else: sys.stdout.write("+") 
     print 

print 단지, 또한 여러 인수를 처리하는 임에도 불구하고, 당신을 위해 sys.stdout에 기록 첫번째 문자열 값을 변환하고 당신이 가진 표현을 종료하지 않는 한 줄 바꿈을 추가

사용 sys.stdout.write() 더 많은 제어를 얻을 수 콤마.

또한 파이썬 2에서 파이썬 3 print()function를 사용하고 물어 보지 인쇄 할 줄 바꿈 수 :

from __future__ import print_function 

def square(n): 
    for i in range(n): 
     for j in range(n): 
      if i==0 or j==0 or i==n-1 or j==n-1: print("*", end='') 
      else: print("+", end='') 
     print() 

을 다른 방법으로, ''.join() 먼저 문자열을 조인

def square(n): 
    for i in range(n): 
     print ''.join(['*' if i in (0, n-1) or j in (0, n-1) else '+' for j in xrange(n)]) 
+0

감사합니다. – piratteegon

+0

Join에서'['']'을 제거하고 Python 3의 print 함수 호출에'('')를 추가 할 수 있습니다 ... –

+1

@GrijeshChauhan : http://stackoverflow.com/a/9061024 참조; '' '.join()'호출의 경우 generator expression 대신에 list comprehension을 사용하는 것이 빠릅니다. –

2

는 당신이 시도 할 수 print "+" 대신 sys.stdout.write("+")을 사용 하시겠습니까?

0

python 3에서이이 문제를 해결할 여기 , 인쇄 동작을 덮어 쓸 수 있습니다 :

print("+", end="") 
+1

파이썬 2에서는'print'는 함수가 아니라 * 문장 *입니다. 파이썬 컴파일러에게 말하지 않는다면 (대신에'from __future__ import print_function'을 사용하여) 함수를 사용하기를 원할 것입니다. –

+0

@ 늑대이 정보를 대답에 추가하면 좋은 대답이됩니다. –

+0

@Martijn Pieters : 알겠습니다, 감사합니다. – Wolf