這裏有三個問題。
首先,你得到Iterative:
一開始是因爲你明確地要求它此行的原因:
print "Iterative:",
只是把它拿出來。
你在每個*
之後得到空格的原因有點棘手。 print
聲明的「魔術逗號」總是打印一個空格。這是沒有辦法的。所以,你必須做的不是使用print
聲明的魔術逗號。
有幾個選項:
- 從Python的3.x中,您可以在2.7與
__future__
聲明借使用更強大的print
功能。您可以傳遞任何要替換空間的分隔符,即使是空字符串。
- 使用
sys.stdout.write
而不是print
;這樣,除非你明確地寫出它們,否則你不會獲得新行和空格。
- 隨着你走,建立起來的字符串,然後
print
整個事情結束。
最後一個是最通用的解決方案(同時也導致了很多其他有用的功能,好像回到或存放建成字符串),所以我會表明:
def insertPattern(string,pattern):
result = ''
end= len(string)-1
for x in range(end):
if x == end:
result += string[x]
if x < end:
result += string[x]+pattern
print result
最後,多餘的*
最後是因爲x == end
永遠不會成立。 range(end)
給你所有的數字,但不包括end
。
你可能想要的是end = len(string)
,然後if x == end-1
。
但你可以簡化這一點。您需要x
的唯一原因是獲得string[x]
,並區分其他人的第一個或最後一個值(因此,您不知道在第一個或最後一個之前添加額外的*
)。你可以用旗子解決最後一個問題,或者僅僅處理第一個問題。然後,你可以遍歷string
本身,而不是在其指數:
def insertPattern(string,pattern):
result = string[0]
for ch in string[1:]:
result += pattern + ch
print result
一旦你做到了這一點,你可能會意識到這是幾乎相同的str.join
方法做什麼,這樣你就可以只需要使用:
def insertPattern(string,pattern):
print pattern.join(string)
如果你不希望它輸出的字「迭代:」那就不要打印。如果你不需要它們之間的空格,那麼使用'sys.stdout.write()'而不是打印。 – sberry 2014-11-21 20:52:27