首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在电路板中插入数组

在电路板中插入数组
EN

Stack Overflow用户
提问于 2020-01-12 03:10:00
回答 3查看 42关注 0票数 2

我试着用这段代码把一个数组"a“放到这个线路板上,但是我只得到了一个只有数组第一个数字的线路板,似乎在变量"i”上缺少并递增,但是我不能在join附近没有语法错误的情况下放入递增,有人能帮忙吗?提前谢谢。代码如下:

代码语言:javascript
复制
`a = [25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

i = 0


def inc_i(i):
    i += 1
    return i

def board_draw(height, width, i):
    top = "┌" + "┬".join(["─"*6]*width) + "┐\n"
    bottom = "└" + "┴".join(["─"*6]*width) + "┘"
    middle = "├" + "┼".join(["─"*6]*width) + "┤\n"
    print(top +
          middle.join(
              "│" +
              "│".join('  {:02d}  '.format(a[i])
                       for y in range(width)) +
              "│\n"

              for x in range(height)) +

          bottom)

board_draw(5, 5, 0)`

我要数组中的每个单元格都有一个不同的数字。

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-12 03:26:09

I在任何时候都不会递增。为了让你的程序保持“逻辑性”,试试这个:

代码语言:javascript
复制
a = [25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

def board_draw(height, width):
    top = "┌" + "┬".join(["─"*6]*width) + "┐\n"
    bottom = "└" + "┴".join(["─"*6]*width) + "┘"
    middle = "├" + "┼".join(["─"*6]*width) + "┤\n"
    print(top +
          middle.join(
              "│" +
              "│".join('  {:02d}  '.format(a[(x*width) + y]) for y in range(width)) +
              "│\n" for x in range(height)) +
              bottom
          )

board_draw(5, 5)
票数 0
EN

Stack Overflow用户

发布于 2020-01-12 03:20:34

这是你想要的结果吗?

代码语言:javascript
复制
a = [[25, 24, 23, 22, 21], [20, 19, 18, 17, 16], [15, 14, 13, 12, 11], [10, 9, 8, 7, 6], [5, 4, 3, 2, 1]]

i = 0

def inc_i(i):
    i += 1
    return i


def board_draw(height, width, i):
    top = "┌" + "┬".join(["─"*6]*width) + "┐\n"
    bottom = "└" + "┴".join(["─"*6]*width) + "┘"
    middle = "├" + "┼".join(["─"*6]*width) + "┤\n"
    print(top +
          middle.join(
              "│" +
              "│".join('  {:02d}  '.format(a[x][y])
                       for y in range(width)) +
              "│\n"

              for x in range(height)) +

          bottom)


board_draw(5, 5, 0)

您可能希望转换列表a,如下所示:

代码语言:javascript
复制
a = [25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

a_bis = [[n for n in a[i:i+4]] for i in range(5)]
a_bis
代码语言:javascript
复制
[[25, 24, 23, 22],
 [24, 23, 22, 21],
 [23, 22, 21, 20],
 [22, 21, 20, 19],
 [21, 20, 19, 18]]
票数 0
EN

Stack Overflow用户

发布于 2020-01-12 03:53:25

我修改并使用了您已经定义的函数inc_i()来迭代列表并打印出正确的结果:

代码语言:javascript
复制
a = [25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

i = -1
def inc_i():
    global i
    i += 1
    return i

def board_draw(height, width, i):
    top = "┌" + "┬".join(["─"*6]*width) + "┐\n"
    bottom = "└" + "┴".join(["─"*6]*width) + "┘"
    middle = "├" + "┼".join(["─"*6]*width) + "┤\n"
    print(top +
          middle.join(
              "│" +
              "│".join('  {:02d}  '.format(a[inc_i()]) for y in range(width)) +
              "│\n" for x in range(height)) +
          bottom)

board_draw(5, 5, 0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59697743

复制
相关文章

相似问题

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