【问题标题】:trying to make ASCII graph python 3试图制作ASCII图python 3
【发布时间】:2013-03-20 13:47:59
【问题描述】:

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

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

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

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

如果您需要,我可以为您提供更多信息。

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

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

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)

这是下面的输出:

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

【问题讨论】:

    标签: python loops printing graph ascii


    【解决方案1】:

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

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

    对于 5,这里有一个方便的 python 代码 sn-p - ''.join(myArray)

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

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

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

    【讨论】:

    • 我要补充一点,如果最终目标是绘制任何函数,他必须首先计算最小和最大 y 值,因为数组的维度取决于这些值。另外,我不确定 ''.join(myArray) 是否适用于二维数组。
    • @civilu 你会为二维数组的每一行而不是数组本身这样做。
    • 您能稍微扩展一下吗?我需要制作一个有 20 行的数组吗?或者只是正在使用的 4 个字符?我将如何遍历每个 x 位置来计算 y?那会是嵌套循环吗?
    • @gunter 是的,对于二维数组,您将使用两级嵌套循环来迭代其所有元素。您会认为该数组表示一个整数值平面。最初你会用空格填充它,如果你喜欢你可以填充轴标记,然后你会遍历它来填充线标记。如果数组大小为 20x20,您将在一个范围内循环,例如 (-10, 10) 以迭代每个 x 值并计算需要标记的相应 y 值。
    • @ivo,我是 python 的初学者,所以我对这一切都很陌生,我们还没有真正涵盖数组,所以我想我需要更多帮助。我不想一直纠缠你寻求帮助,所以如果我支付宝你 5 美元,你能帮我写下这个并更深入地解释它,以便我得到更好的主意吗?谢谢
    猜你喜欢
    • 2012-07-27
    • 1970-01-01
    • 2022-01-13
    • 2015-06-09
    • 2015-01-11
    • 1970-01-01
    • 2016-08-09
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多