【问题标题】:Lists within Lists, Loops within loops Automate the Boring Stuff列表中的列表,循环中的循环 自动化无聊的东西
【发布时间】:2020-10-22 02:54:33
【问题描述】:

所以我正在尝试通过 Automate the Boring Stuff 一书和课程来按我的方式工作,但我很难在第 4 章末尾找出第二个练习题。

问题要求复制这个

grid =
[['.','.','.','.','.','.'],
['.','0','0','.','.','.'],
['0','0','0','0','.','.'],
['0','0','0','0','0','.'],
['.','0','0','0','0','0'],
['0','0','0','0','0','.'],
['0','0','0','0','.','.'],
['.','0','0','.','.','.'],
['.','.','.','.','.','.']]

然后写一段代码,像这样打印出来

..OO.OO..
.OOOOOOOO.
.OOOOOOOO.
..OOOOO..
...哦...
....O....

所以我能够弄清楚如何在列表值中调用列表并使用以下代码横向打印心脏:

grid = [['.','.','.','.','.','.'],
    ['.','0','0','.','.','.'],
    ['0','0','0','0','.','.'],
    ['0','0','0','0','0','.'],
    ['.','0','0','0','0','0'],
    ['0','0','0','0','0','.'],
    ['0','0','0','0','.','.'],
    ['.','0','0','.','.','.'],
    ['.','.','.','.','.','.']]
    

for x in grid:
    for y in x:
        print(y,end='')
    print('\n')

现在我正试图弄清楚如何以正确的方式打印它。我知道我需要先调用整个列表中每个列表中 0 索引处的值,然后是 1 索引,依此类推。

我查看了其他答案并将我的代码调整为:

for x in range(len(grid[0])):
    for y in range(len(grid)):
        print(grid[x][y],end='')
    print('\n')

最初我没有 range(len()) 但它给了我一个错误,说索引必须是整数(这是使用我假设的 len 函数修复的,因为 len 函数返回一个实际的整数,对吗?)。现在我收到一个错误,表明我的列表超出范围。几个小时以来,我一直试图自己解决这个问题,但我根本不理解并试图平息我的挫败感。谁能帮我吗?我已经看到了一些其他答案,其中包含一些用于完成练习的更高级的方法,但我真的很想掌握我现在正在学习的这些概念,而且只是一般的基础知识,所以我只是在寻找涉及真正最简单的列表方法的建议,和循环。谢谢大家,如有需要,我可以添加更多信息。

【问题讨论】:

    标签: python list loops for-loop


    【解决方案1】:

    您应该在打印期间交换循环变量(有效地旋转打印)。

    for x in range(len(grid[0])):
        for y in range(len(grid)):
            print(grid[y][x],end='')
        print() # Removed '\n' here because it printed two lines (end='\n' by default)
    

    之所以有效,是因为外循环 (x) 通过每一列,而内循环 (y) 通过每一行。因此,通过按该顺序打印,您可以有效地旋转图像。

    【讨论】:

    • 我明白你在说什么,我确实曾经有过这样的代码,但它会横向打印出心脏。原来我所要做的就是在 print 语句中切换 x 和 y 并修复错误并正确打印。非常感谢您的回答!!
    • 啊我的错,我无法在打印输出中看出它没有旋转。很高兴你明白了,我已经更新了我的答案,所以它对这个问题是准确的。 @sarah.andromeda315
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2020-07-09
    • 2020-08-30
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多