python - python中的空心钻石

标签 python

我的目标是使用 python 创建一个空心钻石。

示例输入:

Input an odd Integer:
      9

示例输出:

    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *

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

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

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

Input an odd integer: 7
*
*
*
*
*
*
*
*


*
*
*
*
*
*
*
*


*
*
*
*
*
*
*


*
*
*
*
*
*
*



*
*
*
*
*
*
*
*
*
*
*


*
*
*
*
*
*
*
*
*


*
*
*
*
*
* 
*


*
*
*
*
*


*
*
*





*

我实际上是从这篇文章中转换代码:http://www.programmingsimplified.com/c/source-code/c-program-print-diamond-pattern用C语言写的,稍后会修改为空心的但是我不能得到它...我的转换有问题..

最佳答案

空心菱形是方程的解

|x|+|y| = N

在整数网格上。所以空心金刚石作为 1-liner:

In [22]: N = 9//2; print('\n'.join([''.join([('*' if abs(x)+abs(y) == N else ' ') for x in range(-N, N+1)]) for y in range(-N, N+1)]))
    *    
   * *   
  *   *  
 *     * 
*       *
 *     * 
  *   *  
   * *   
    *    

关于python - python中的空心钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14122653/

相关文章:

python - 使用 Python Paramiko 对 SFTP 服务器进行两因素( key 和键盘交互)身份验证

python - 波浪线(代字号)即 `~` 运算符在 Python 中有什么作用?

python - 如何将 SQL 查询结果分配给变量(Robot Framework)以输入应用程序编辑文本?

python - 为什么我不能抑制 numpy 警告

python - 计算两个无序集合之间的 "distance"

python - 如何在Python 3中导入 "gleam"包?

Python 库允许我在图像上添加文本

python - pyqtgraph - 将 ArrowItem 的原点移动到本地中心

c# - PyEphem(日出/日落时间计算)等价于 C#

python - 对特定用户进行用户身份验证