2013-08-12 5 views
1

제가 만든 프로그램에 약간의 문제가 있습니다. 다이아몬드가 표시되고 있지만 문제가 있습니다. 내 코드는 다음과 같습니다.파이썬 3에서 후행 공백을 제거하십시오.

a = input("Enter width: ") 
a = int(a) 
b = a 
for i in range(a): 
    i = i + 1 
    b = a - i 
    text = " " * b + " " + "* " * i 
    print(text[:-1]) 
for i in range(a): 
    i = i + 1 
    b = a - i 
    text = " " * i + " " + "* " * b 
    print(text[:-1]) 

감사합니다. 이 대답은

+0

첫째,'I = I + 1 '을 A의 'for '루프는 꽤 이상합니다. 루프에서 반복 변수를 변경하려는 이유는 무엇입니까? – gefei

+0

@gefei 파이썬 루프가 점 0에서 시작하고 1에서 시작해야하기 때문에 그랬습니다. – NoviceProgrammer

+0

인쇄 반환 값에 대한 슬라이스가 있습니다. 끈에 넣는다. – njzk2

답변

1

입니다. 왜냐하면 print은 문자열을 반환하지 않기 때문에 None을 반환하기 때문입니다.

>>> print(print("foo")) 
foo 
None 

은 아마 당신은이 작업을 수행하고 싶었 :

text = " " * i + " " + "* " * b 
print (text[:-1]) 

더 후행 공백을 제거 사용하려면 str.rstrip :

>>> "foo ".rstrip() 
'foo' 

도움 str.rstrip에 :

>>> print (str.rstrip.__doc__) 
S.rstrip([chars]) -> str 

Return a copy of the string S with trailing whitespace removed. 
If chars is given and not None, remove characters in chars instead. 
0

당신은 (하지 인쇄 반환 값에 대한)이 같은 당신의 조각 쓸 수 있습니다 :

("* "*b)[:-1] 

또는, 당신은 가입 사용할 수 있습니다 모든

' '.join(['*']*b) 
관련 문제