0

我正在尝试创建一个没有方法或 for 循环的 4x3 表。我想使用我在课堂上学到的东西,即布尔值、if 语句和 while 循环。

我想要它,这样如果我输入create_table('abcdefghijkl')它会从最左边的行和列开始,一直到列的末尾,然后从下一列的顶部重新开始,依此类推,如下所示:

| a | e | i |

| b | f | j |

| c | g | k |

| d | h | l |

以下是我到目前为止所拥有的。它不完整。如何添加到函数中,以便在向下 4 行后,字符串应该从顶部开始继续到下一列?我正在为此绞尽脑汁。

我可以在网上找到所有使用 for 循环和创建此类表的方法的示例,但我想为此实现 while 循环。

提前致谢!

def create_table(table):
    t =  "" + "|" + ""
    i = 0
    while i < 12:
        t = t + " " + "|" + table[i] + " "
        i=i+1
        print(t)
    return table
4

3 回答 3

4

根据行而不是列来考虑它。您一次写出一行,而不是一次写出一列,因此请查看原始列表中各个单元格的索引:

| 0 | 4 | 8 |

| 1 | 5 | 9 |

| 2 | 6 | 10 |

| 3 | 7 | 11 |

请注意每一行的单元格的索引相差 4。为第 n 行的单元格找到一个简单的表达式,任务将变得更加容易,因为您实际上将打印出一个常规表格。

于 2013-06-08T04:21:37.943 回答
2

您可以使用一个简单的方法将大多数 for 循环转换为 while 循环,因此如果您知道如何使用 for 循环来完成它,那么您就可以开始了。如果你有

for x in s:
    {statements}

做了

i = 0
while i < len(s):
    x = s[i]
    {statements}
    i += 1

它只是不适用于一些不支持长度和索引的可枚举类型,例如生成器。

于 2013-06-08T05:32:58.387 回答
0

因为您正在打印到终端,所以您需要考虑打印每个水平行,而不是每个垂直列。尝试类似:

table = 'abcdefghijkl'
i = 0
while i < 4:
    print("| {} | {} | {} |".format(table[i], table[i+4], table[i+8]))
    i += 1
于 2013-06-08T04:24:01.983 回答