首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使枯燥的东西自动化-台式打印机

使枯燥的东西自动化-台式打印机
EN

Stack Overflow用户
提问于 2021-03-24 01:31:05
回答 1查看 32关注 0票数 0

我正在尝试做一个实践项目,关于如何使无聊的东西自动化。但是我被卡住了。

从本质上讲,当给出如下列表时:

代码语言:javascript
复制
tableData = [['apples', 'oranges', 'cherries', 'banana'],
         ['Alice', 'Bob', 'Carol', 'David'],
         ['dogs', 'cats', 'moose', 'goose']]

程序应该打印出下表,其中每一列都是右对齐的:

代码语言:javascript
复制
    apples Alice  dogs
   oranges   Bob  cats
  cherries Carol moose
    banana David goose

这是我的代码:

代码语言:javascript
复制
tableData = [['apples', 'oranges', 'cherries', 'banana'],
                 ['Alice', 'Bob', 'Carol', 'David'],
                 ['dogs', 'cats', 'moose', 'goose']]
    
    def printTable():
        colWidths = [0] * len(tableData)
        for index in range(len(tableData)):
            colWidths[index] = len(max(tableData[index], key = len))
    
        for index in range(len(tableData)):
            for element in tableData[index]:
                print(element.rjust(colWidths[index]))
    
    printTable()

我的问题是,每个列表都会正确地正确对齐,但所有内容都打印在单个列中,而不是一个表中,如下所示:

代码语言:javascript
复制
  apples
 oranges
cherries
  banana
Alice
  Bob
Carol
David
 dogs
 cats
moose
goose

有没有什么方法可以在for循环的每次迭代后添加一个新列?或者你将如何改进我的代码?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-03-24 01:33:53

print()有一个名为end的参数,默认情况下会分配一个换行符。这是在创建换行符。要避免换行,请使用end=""作为参数。

但是,这并不能解决您的问题,因为您的代码被设计为一次输出一列。这不是终端的工作方式。重写代码,一次输出一行。

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

https://stackoverflow.com/questions/66768307

复制
相关文章

相似问题

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