【问题标题】:Alphabetical Palindrome Triangle in PythonPython中的字母回文三角形
【发布时间】:2016-11-17 12:25:02
【问题描述】:

这个词是“赛车”,这是我应该得到的三角形:-

   e
  cec 
 aceca
racecar

我正在使用 python 2.7 我正在尝试使用 for 循环。谢谢你。 这是我得到的输出

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 之前和 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

我尝试了更多,但不知何故我没有按正确的顺序获得输出。

【问题讨论】:

  • SO 不是代码服务!
  • 我投票决定将此问题作为离题结束,因为 SO 不是编码服务或家庭作业完成服务。
  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 向我们展示您的代码,描述您在完成任务时遇到的问题。显示你的结果。如果这不是您所期望的,请解释为什么您认为它应该有所不同。我们是一个友好的地方,但我们会与您合作,而不是为您服务。
  • @Pras.V 您可能已经尝试了很多,但我们没有看到任何证据。给我们一些不起作用的代码,我们可以从那里开始..

标签: python


【解决方案1】:

我推荐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

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 2010-10-08
    • 1970-01-01
    • 2019-02-12
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多