2

我正在尝试使用 python 循环制作一个 ASCII 图。目标是让用户输入输入(公式)[x+1] 等并打印出图形。图形的域和范围仅从 -10 到 +10。

我设法让它工作,但仅适用于公式 (-x+1),即我的代码中的 (x+1)。

我知道问题是因为我的循环从顶部开始打印它,所以我必须更改它以便它以负方向打印循环,但我被困在如何将我的图形组合成嵌套循环以便打印它out 正确,然后替换函数输出的对应位置。

我现在在想,也许我应该让它打印出'*'线,然后是它周围的图表,但我认为这更复杂。

如果你需要,我可以给你更多信息。

任何建设性的想法将不胜感激。

这是我的代码,让我知道你的想法。

height=20
w=10
x=0
for a in range(0,11):
    ps= ((" " * w)+('|')+(" " * w))
    ps=list(ps)
    ps[x]="*"
    x=x+1
    pp="".join(ps)
    print(pp)



rs=(('-'*10)+('+')+('-'*10))
rs=list(rs)
rs[x]="*"
rr="".join(rs)
print(rr)

for a in range(0,10):
    ws = ((" " * w)+('|')+(" " * w))
    ws=list(ws)
    y=x+1
    ws[y]="*"
    x=x+1
    wp="".join(ws)
    print(wp)

这是下面的输出:

*         |          
 *        |          
  *       |          
   *      |          
    *     |          
     *    |          
      *   |          
       *  |          
        * |          
         *|          
          *          
----------+*---------
          | *        
          |  *       
          |   *      
          |    *     
          |     *    
          |      *   
          |       *  
          |        * 
          |         *
4

1 回答 1

0

这是解决问题的另一种方法:

  1. 创建一个二维数组,每个元素都是一个字符
  2. 预先填写背景图线
  3. 循环遍历每个 x 位置,并计算四舍五入的 y 位置
  4. 将位置插入*到您的二维数组中
  5. 最后将整个二维数组打印为一组线

对于 5,这是一个方便的 python 代码片段 -''.join(myArray)

您会注意到,这种解决方法将数据结果的计算与实际输出分开。这通常是在简单程序中分离逻辑的好方法:

  1. 处理、过滤、清理和组织您的程序输入数据
  2. 对输入进行数据处理
  3. 制定、格式化和输出处理后的数据

如果您通过这三个通用/“元”步骤组织您的程序,它可以帮助更多地组织您的代码并使其更易于理解。

于 2013-03-20T14:07:52.890 回答