在学习 Python 时,最好浏览一下它的库函数。在 Python 中,一切都是对象。每个对象都有方法。这是您需要了解的有关 Python 中 strings 的所有信息的链接。
https://docs.python.org/2/library/string.html
您将在此处获得许多与您的问题直接相关的功能。你对 Python 中的对象越熟悉,你就越擅长用 Python 编程。这适用于任何语言。如果您想在特定语言上变得更好,请了解它的细节。
对于您的问题,您可以了解ljust()、rjust()和join()的方法。你如何使用它们?
In [126]: '[' + 'abcd'.ljust(10) + ']'
Out[126]: '[abcd ]'
In [127]: '[' + 'abcd'.rjust(10) + ']'
Out[127]: '[ abcd]'
In [134]: '-][-'.join(['A', 'list', 'of', 'strings'])
Out[134]: 'A-][-list-][-of-][-strings'
当然,您可以将'abcd' 替换为'*'s。在这种情况下,你有,
In [129]: ('*'*3).ljust(5) + ('*'*3).rjust(5)
Out[129]: '*** ***'
现在,您只需将 3 替换为您选择的计数器即可。请注意,您的数字会在 2 秒内递增。在你这样做之前,我希望你知道列表理解。如果没有,您可以在这里了解它:
https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
In [132]: [('*'*i).ljust(5) + ('*'*i).rjust(n) for i in range(1, n+2, 2)]
Out[132]: ['* *', '*** ***', '**********']
现在让我们将它保存在一个变量中,然后将它们连接在一起......
In [135]: l = [('*'*i).ljust(5) + ('*'*i).rjust(n) for i in range(1, n+2, 2)]
In [137]: print '\n'.join(l)
* *
*** ***
**********
当然,你也需要另一半。为此,您将需要几乎使用上面创建的所有列表作为l。注意:
In [138]: l # Original list
Out[138]: ['* *', '*** ***', '**********']
In [139]: l[:-1] # Original list - the last value in the list
Out[139]: ['* *', '*** ***']
In [140]: l[:-1][::-1] # reverse that one
Out[140]: ['*** ***', '* *']
In [141]: l + l[:-1][::-1] # join the reversed list to the original list
Out[141]: ['* *', '*** ***', '**********', '*** ***', '* *']
最后,我们可以加入两个列表并形成 bwotie:
In [143]: print '\n'.join(l + l[:-1][::-1])
* *
*** ***
**********
*** ***
* *
所以总而言之,你需要 3 行来打印领结:
n = 5 # Or a user input here ...
l = [('*'*i).ljust(5) + ('*'*i).rjust(n) for i in range(1, n+2, 2)]
print '\n'.join(l + l[:-1][::-1])
希望您能看到用 Python 阅读文档是值得的。您将能够获得很多有用的方法,这可以使编码变得非常容易。你对 Python 库越熟悉,你的编码就越好。这些库中的大多数都针对特定系统进行了微调,因此也很难超越它们的效率。所以你得到了两倍的优势,同样的努力:)。
祝你编程顺利。