2016-11-17 32 views
-6

的詞是「賽車」,這是我應該得到的三角形: -字母迴文三角在Python

e 
    cec 
aceca 
racecar 

我使用python 2.7 我想它使用使循環。謝謝。 這是我得到

e 
e c c 
e c a a c 
e c a r r a c 
e c a r r r r a c 

香港專業教育學院發現中間值,並試圖在打印輸出。但是我得到的輸出總是在一開始就有e。我無法在e之前和之後打印字母。

m="racecar" 
mid=len(m)/2 

for i in range(0,5): 
    for k in range(0,i): 
     print m[mid-k], 
    for j in range(i,0,-1): 
     print m[mid-j], 

    print 

我試過更多,但不知何故,我沒有得到正確的順序輸出。

+4

等都不是代碼服務! – Arman

+3

我正在投票結束這個問題作爲題外話,因爲SO不是一個編碼服務或家庭作業完成服務。 – TigerhawkT3

+4

它看起來像你希望我們爲你寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。展示這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有),預期輸出以及實際獲得的輸出(控制檯輸出,回溯等)。您提供的細節越多,您可能會收到的答案就越多。檢查[FAQ](http://stackoverflow.com/tour)和[如何提問](http://stackoverflow.com/help/how-to-ask)。 –

回答

0

我建議KISS它。隨着一些絕地技巧,你可以得到它還有:

def isItAPalindrome(wordPalindrome): 

    wordLengh = len(wordPalindrome) 

    if wordLengh % 2 != 0 and wordLengh: 

     return True 

    return False 

import sys 
wordPalindrome = "racecar" 

if not isItAPalindrome(wordPalindrome): 

    sys.exit() 

middlePoint = len(wordPalindrome)/2 

for currentRange in range(0, middlePoint + 1): 

    # print empty spaces 
    for k in range(0, middlePoint - currentRange): 

     # print without new line 
     sys.stdout.write(" ") 

    # print the Palindrome "racecar" 
    for k in range(middlePoint - currentRange, middlePoint + currentRange + 1): 

     sys.stdout.write(wordPalindrome[ k ]) 

    # print new line 
    sys.stdout.write("\n") 

輸出例如:

e 
    cec 
aceca 
racecar 

    f 
    efe 
    defed 
    cdefedc 
bcdefedcb 
abcdefedcba 

參考文獻:

  1. How do I abort the execution of a Python script?
  2. Python: avoid new line with print command