首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >巨蟒中的空心钻石

巨蟒中的空心钻石
EN

Stack Overflow用户
提问于 2013-01-02 21:08:06
回答 9查看 11.2K关注 0票数 3

我的目标是使用python创建一个中空的菱形。

示例输入:

代码语言:javascript
运行
复制
Input an odd Integer:
      9

示例输出:

代码语言:javascript
运行
复制
    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *

但到目前为止,我有以下代码不能正常工作。请帮助我修改代码以实现上述目标:

代码语言:javascript
运行
复制
a=int(input("Input an odd integer: "))

k=1
c=1

r=a

while k<=r:
    while c<=r:
        print "*"
        c+=1

    r-=1
    c=1

    while c<=2*k-1:
        print "*"
        c+=1

    print "\n"
    k+=1

r=1
k=1
c=1

while k<=a-1:
   while c<=r:
       print " "
       c+=1

   r+=1
   c=1

   while c<= 2*(a-k)-1:
       print ("*")
       c+=1

   print "\n"
   k+=1

上面的代码返回的结果与我的目标相去甚远。

代码语言:javascript
运行
复制
Input an odd integer: 7
*
*
*
*
*
*
*
*


*
*
*
*
*
*
*
*


*
*
*
*
*
*
*


*
*
*
*
*
*
*



*
*
*
*
*
*
*
*
*
*
*


*
*
*
*
*
*
*
*
*


*
*
*
*
*
* 
*


*
*
*
*
*


*
*
*





*

实际上,我正在转换这篇文章中的代码:用C语言编写的http://www.programmingsimplified.com/c/source-code/c-program-print-diamond-pattern,稍后将针对空心的代码进行修改,但我无法获得它……我的转换有问题..

EN

Stack Overflow用户

发布于 2013-01-02 21:32:30

这并不美观,但它是一个可以做你想做的事情的函数:

代码语言:javascript
运行
复制
def make_diamond(size):
    if not size%2:
        raise ValueError('odd number required')
    r = [' ' * space + '*' + ' ' * (size-2-(space*2)) + '*' + ' ' * space for space in xrange((size-1)/2)]    
    r.append(' ' * ((size-1)/2) + '*' + ' ' * ((size-1)/2))
    return '\n'.join(r[-1:0:-1] + r)

  • 首先检查以确保它是奇数,然后从中心开始创建一列直线,然后创建最后一个点。
  • 然后我将它们作为字符串返回,底部的镜像在顶部,没有中心线。

输出:

代码语言:javascript
运行
复制
>>> print make_diamond(5)
  *  
 * * 
*   *
 * * 
  *  
>>> print make_diamond(9)
    *    
   * *   
  *   *  
 *     * 
*       *
 *     * 
  *   *  
   * *   
    *   
票数 1
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14122653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档