Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动化无聊的东西第6章台式打印机几乎完成_Python_Python 3.x_Printing - Fatal编程技术网

Python 自动化无聊的东西第6章台式打印机几乎完成

Python 自动化无聊的东西第6章台式打印机几乎完成,python,python-3.x,printing,Python,Python 3.x,Printing,在本节中,他们希望我们创建以下表格: apples Alice dogs oranges Bob cats cherries Carol moose banana David goose 它必须向右对齐,输入为tableData。这是我的密码: tableData=[['apples', 'oranges', 'cherries', 'banana'], ['Alice', 'Bob', 'Carol', 'David'], ['dog

在本节中,他们希望我们创建以下表格:

    apples Alice dogs
     oranges Bob cats
 cherries Carol moose
   banana David goose
它必须向右对齐,输入为tableData。这是我的密码:

tableData=[['apples', 'oranges', 'cherries', 'banana'],
        ['Alice', 'Bob', 'Carol', 'David'],
        ['dogs', 'cats', 'moose', 'goose']]
listlens=[]
tour=0
lists={}
for m in tableData:
    total=0
    tour+=1
    for n in m:
        total+=len(n)
        lists["list:",tour]=total
    print("list",tour,total)    

itemcount=list(lists.values())
sortedlen=(sorted(itemcount,reverse=True))
longest=sortedlen[0]

#print (lists['list:', 1])
#print (longest)


for m in range(len(tableData[0])):
    for n in range(len(tableData)):
        print (tableData[n][m],end=" ")
        n+=1
    print ("".rjust(lists['list:', 1],"-"))
    m+=1
我几乎完成了,除了一件事,我不能使它正确。这个输出是我到目前为止最接近的

apples Alice dogs ---------------------------
oranges Bob cats ---------------------------
cherries Carol moose ---------------------------
banana David goose ---------------------------
如果我将rjust放在内部for循环中,则输出会有很大不同:

apples-------------------------- Alice-------------------------- dogs-------------------------- 
oranges-------------------------- Bob-------------------------- cats-------------------------- 
cherries-------------------------- Carol-------------------------- moose-------------------------- 
banana-------------------------- David-------------------------- goose-------------------------- 

给你,年轻的学徒:

tableData=[['apples', 'oranges', 'cherries', 'banana'],
    ['Alice', 'Bob', 'Carol', 'David'],
    ['dogs', 'cats', 'moose', 'goose']]
maxlen = 0
for fruit,name,animal in zip(tableData[0], tableData[1], tableData[2]):
    maxlen = max(len(fruit) + len (name) + len (animal), maxlen)
for fruit,name,animal in zip(tableData[0], tableData[1], tableData[2]):
    length = len(fruit) + len (name) + len (animal) 
    print ((' ' * (maxlen - length)) + fruit, name, animal)

循环确定maxlen可能不是最优的,复制粘贴是我想到的最快的方法。

这里有一种替代方法,也许你可以应用到你自己的代码中。我首先使用了
tableData
,并将其分类到字典中,以便更容易使用。在那之后,我找到了最长的字符列表。这让我们知道短名单应该走多远。最后,我打印出每个列表,根据与最长列表的差异,在较短列表前面添加空格

# orginal data
tableData=[['apples', 'oranges', 'cherries', 'banana'],
        ['Alice', 'Bob', 'Carol', 'David'],
        ['dogs', 'cats', 'moose', 'goose']]

# empty dictonary for sorting the data
newTable = {0:[], 1:[], 2:[], 3:[]}

# iterate through each list in tableData
for li in tableData:
    for i in range(len(li)):
        # put each item of tableData into newTable by index
        newTable[i].append(li[i])

# determine the longest list by number of total characters
# for instance ['apples', 'Alice', 'dogs'] would be 15 characters
# we will start with longest being zero at the start
longest = 0
# iterate through newTable
# for example the first key:value will be 0:['apples', 'Alice', 'dogs']
# we only really care about the value (the list) in this case
for key, value in newTable.items():
    # determine the total characters in each list
    # so effectively len('applesAlicedogs') for the first list
    length = len(''.join(value))
    # if the length is the longest length so far,
    # make that equal longest
    if length > longest:
        longest = length

# we will loop through the newTable one last time
# printing spaces infront of each list equal to the difference
# between the length of the longest list and length of the current list
# this way it's all nice and tidy to the right
for key, value in newTable.items():
    print(' ' * (longest - len(''.join(value))) + ' '.join(value))

首先连接元素,然后找到最长的元素,然后可以使用
%*s
写入行。更多信息请参见代码中的注释

tableData=[['apples', 'oranges', 'cherries', 'banana'],
        ['Alice', 'Bob', 'Carol', 'David'],
        ['dogs', 'cats', 'moose', 'goose']]

longest = 0 # to find the longest line
lines = [] # to keep lines 

for elements in zip(tableData[0], tableData[1], tableData[2]):

    # join elements in line - like 'apples' + ' ' + 'Alice' + ' ' + 'dogs'
    line = ' '.join(elements) 

    # add line to the list
    lines.append(line) 

    #print(line) # you can print it to see what you get

    # find the longest line
    length = len(line)
    if length > longest:
        longest = length

#print('the longest:', longest)

longest += 1 # to get one space more at left side

# print lines using `%*s`
# if `longest` is 21 then it will works as `%21s`
for line in lines:
    print('%*s' % (longest, line))

我遇到了完全相反的问题:我已经知道了如何确定正确对齐的参数,以及如何正确对齐项目。然而,我很难在一行中打印出几个项目。我尝试了“end=”,但是输出看起来仍然很奇怪。最后,我尝试将要打印的项目连接在一行中,并在循环中再次调用print函数。它成功了

做这个简单的练习花了我几个小时,但绝对值得回顾所有增量改进最终是如何使代码工作的,感觉真的很好

这是我的密码。希望这会有所帮助

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

def printTable(tableData):
    colWidths = [0] * len(tableData)
    for i in range(len(tableData)):
        for j in range(len(tableData[i])):
            if colWidths[i] <= len(tableData[i][j]):
                colWidths[i] = len(tableData[i][j])
            else:
                colWidths[i] = colWidths[i]

    for j in range(len(tableData[i])):
        for i in range(len(tableData)):
            print(''.join(tableData[i][j].rjust(colWidths[i] + 1)), end = '')
            #the "+ 1" is used to allow for a space in between
            print()

printTable(tableData)
实际上起了作用


在这种情况下,不应该在j之前使用i吗?这对我来说似乎是违反直觉的,但无论如何,当我尝试它时,它奇迹般地工作了。

这里有一个解决方案。如果所有内部列表的元素数量相同,则即使内部列表的数量发生变化或内部列表中的元素数量发生变化,它也可以工作

tableData = [
    ['apples', 'oranges', 'cherries', 'banana'],
    ['Alice', 'Bob', 'Carol', 'David'],
    ['dogs', 'cats', 'moose', 'goose']
]

col_widths = list()
for i, record in enumerate(tableData):
    col_widths.insert(i, max(len(item) for item in record))

for i in range(len(tableData[0])):
    print(' '.join(record[i].rjust(col_widths[j]) for j, record in enumerate(tableData)))
#!蟒蛇3
#table printer prints获取字符串列表并将其显示在
#组织良好的表格,每列右对齐。
tableData=[['苹果'、'橘子'、'樱桃'、'香蕉'],
[‘爱丽丝’、‘鲍勃’、‘卡罗尔’、‘大卫’],
[‘狗’、‘猫’、‘驼鹿’、‘鹅’]]
def打印表(数据):
#在本节中,我们将创建一个包含每列宽度的列表
colWidths=[0]*len(数据)
对于范围内的m(长度(冷宽)):
对于范围内的n(len(数据[0]):
如果冷宽[m]
根据作者的提示:

“提示:您的代码首先必须在每个内部列表中找到最长的字符串,以便整列的宽度足以容纳所有字符串。您可以将每列的最大宽度存储为整数列表。printTable()函数可以以colWidths=[0]*len(tableData)开头。”,它将创建一个包含与tableData中内部列表数量相同数量的0值的列表。这样,colWidths[0]可以存储tableData[0]中最长字符串的宽度,colWidths[1]可以存储tableData[1]中最长字符串的宽度,依此类推。然后,您可以在colWidths列表中找到最大值,以确定传递给rjust()字符串方法的整数宽度。”

以下是我的答案:

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]


def table_printer(tab_data):
    col_widths = [0] * len(tab_data)  # creates 3 lists based on the list length
    for j in range(len(tab_data[0])):  # finds a length of 4 items (aka rows)
        for i in range(len(tab_data)):  # finds a length of 3 items (aka columns)
            col_widths[i] = len((max(tab_data[i], key=len)))  # sets the column width to the maximum length of an item in the list
            a = tab_data[i][j]
            print(a.rjust(col_widths[i]), end=" ")  #  every time we print a column, we rjust it to the max width.
        print("\n")


table_printer(tableData)

这就是我最后得到的…没有太多的网络帮助。然而,那条印刷线很烂。我喜欢上面的一些,但不打算模仿

tableData = [['apples','oranges','cherries','banana'],
             ['Alice','Bob','Carol','David'],
             ['dogs','cats','moose','goose']]

def printTable():
    colWidths=[0]*len(tableData)
    for i in range(len(tableData)):
        for x in range(len(tableData[i])):
            if colWidths[i]<len(tableData[i][x]):
                colWidths[i]=len(tableData[i][x])
    for x in range(len(tableData[i])):
        print(tableData[0][x].rjust(colWidths[0]+1) + tableData[1][x].rjust(colWidths[1]+1) + tableData[2][x].rjust(colWidths[2]+1))

printTable()
tableData=[[‘苹果’、‘橙子’、‘樱桃’、‘香蕉’],
[“爱丽丝”、“鲍勃”、“卡罗尔”、“大卫”],
[‘狗’、‘猫’、‘驼鹿’、‘鹅’]
def printTable():
colWidths=[0]*len(tableData)
对于范围内的i(len(tableData)):
对于范围内的x(len(tableData[i]):

if colWidths[i]以下是我是如何做到的,使用了本书目前为止使用的提示和信息

无论tableData中有多少子列表,也不管每个子列表中有多少项,此代码都有效

我在一个循环中使用了一个循环来实现这一点,并在每个打印项目后打印一个空格。如果是最后一个类别项目,则打印新行

tableData = [['apples', 'oranges', 'cherries', 'banana','orange'],
             ['Alice', 'Bob', 'Carol', 'David','Phillip'],
             ['dogs', 'cats', 'moose', 'goose','anteater'],
             ['mitsubishi','honda','toyota','ford','range rover']]


def printTable(table):
    colWidths = [0] * len(table)
    for i in range(len(table)):
        for x in table[i]:
            if len(x) > colWidths[i]:
                colWidths[i] = len(x)
    print(colWidths)

    for i in range(len(table[0])):
        for x in range(len(table)):
            print(table[x][i].rjust(colWidths[x]),end = ' ')
            if x == len(table)-1:
                print('\r')



printTable(tableData)


'''
table[0,0] + table [1,0] + table [2,0]
table[1,0] + table [1,1]

'''
tableData=[['苹果','橙子','樱桃','香蕉'],
[‘爱丽丝’、‘鲍勃’、‘卡罗尔’、‘大卫’],
[‘狗’、‘猫’、‘驼鹿’、‘鹅’]]
def printTable():
#List colWidth包含每个内部列表中最长的字符串
colWidth=[0]*len(tableData)
n=0
#在每个内部列表中查找最长的字符串并存储在
冷宽
对于tableData中的li:
num=0
李俊仁:

如果(num我认为最简单的解决方案是找到整个列表(内部和外部)中最大大小字符串的长度,然后将其设置为右对齐方法(rjustion())的参数,然后根据问题使用循环打印列表值

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]


innerlen=0

for m in tableData:
    for n in m:
        if innerlen < len(n):
            innerlen = len(n)




for m in range(len(tableData[0])):
    for n in range(len(tableData)):
        print(tableData[n][m].rjust(innerlen),end="")

    print("")
tableData=[['苹果','橙子','樱桃','香蕉'],
[‘爱丽丝’、‘鲍勃’、‘卡罗尔’、‘大卫’],
[‘狗’、‘猫’、‘驼鹿’、‘鹅’]]
innerlen=0
对于tableData中的m:
对于m中的n:
如果内透镜<透镜(n):
内透镜=透镜(n)
对于范围内的m(len(tableData[0]):
对于范围内的n(len(tableData)):
打印(tableData[n][m].rjust(innerlen),end=”“)
打印(“”)

以下是我的练习方法:

#!/usr/bin/env python3

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose','goose']]

def printTable():
    colWidths = [0] * len(tableData)

    # find longest word in each list, convert to int
    # and add to colWidths var
    for i in range(len(tableData)):
        for l in tableData[i]:
            if len(l) >= colWidths[i]:
                colWidths[i] = len(l)
    # print and justify using the values from colWidths + 1
    for t in range(4):
        print(tableData[0][t].rjust(colWidths[0]+1) + \
              tableData[1][t].rjust(colWidths[1]+1) + \
              tableData[2][t].rjust(colWidths[2]+1))

printTable()

也许不是最好的方法,但我的解决方案如下:

def printtable(listlist):
    # variable stores the maximum length of the words in the lists
    lenghtCounter = 0  #8
    listCounter = 0  #3
    dict = {}

    for list in listlist:
        listCounter += 1
        wordcounter = 0  

        for pos in range(len(list)):
            wordcounter += 1

            for word in list[pos:len(list):len(list)]:
                dict.update({list[pos]: pos})

                # length counter will store the longest value
                if len(word) > lenghtCounter:
                    lenghtCounter = len(word)

    for i in range(wordcounter):
        line = []
        strline = ''

        for k, v in dict.items():
            if v == i:
                line.append(k)
                strline.join(k.ljust(lenghtCounter))

        for el in line:
            strline += el.ljust(lenghtCounter + 5)
        print(strline)

tableData = [
    ['apples', 'oranges', 'cherries', 'bananas'],
    ['Alice', 'Bob', 'Carol', 'David'],
    ['dogs', 'cats', 'moose', 'goose']
]

printtable(tableData)

这里,首先我们必须计算每个内部列表中最长字符串的长度,我们将其存储在“列中
tableData = [['apples', 'oranges', 'cherries', 'banana'],
            ['Alice', 'Bob', 'Carol', 'David'],
            ['dogs', 'cats', 'moose', 'goose']]

def printTable(list):
    len_list = []
    for i in range(len(list)):
        len_list.append(len(max(list[i], key=len)))
    for m in range(len(list[i])):
        for i in range(len(list)):
            print(list[i][m].rjust(len_list[i]+1), end = "")
        print() #to add a new line

printTable(tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]


innerlen=0

for m in tableData:
    for n in m:
        if innerlen < len(n):
            innerlen = len(n)




for m in range(len(tableData[0])):
    for n in range(len(tableData)):
        print(tableData[n][m].rjust(innerlen),end="")

    print("")
#!/usr/bin/env python3

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose','goose']]

def printTable():
    colWidths = [0] * len(tableData)

    # find longest word in each list, convert to int
    # and add to colWidths var
    for i in range(len(tableData)):
        for l in tableData[i]:
            if len(l) >= colWidths[i]:
                colWidths[i] = len(l)
    # print and justify using the values from colWidths + 1
    for t in range(4):
        print(tableData[0][t].rjust(colWidths[0]+1) + \
              tableData[1][t].rjust(colWidths[1]+1) + \
              tableData[2][t].rjust(colWidths[2]+1))

printTable()
def print_table(tab):
    for j in range(len(tab[0])):
        for i in range(len(tab)):
            m = max([len(s) for s in tab[i]])
            print(tab[i][j].rjust(m), end=' ')
        print('')


tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

print_table(tableData)
def printtable(listlist):
    # variable stores the maximum length of the words in the lists
    lenghtCounter = 0  #8
    listCounter = 0  #3
    dict = {}

    for list in listlist:
        listCounter += 1
        wordcounter = 0  

        for pos in range(len(list)):
            wordcounter += 1

            for word in list[pos:len(list):len(list)]:
                dict.update({list[pos]: pos})

                # length counter will store the longest value
                if len(word) > lenghtCounter:
                    lenghtCounter = len(word)

    for i in range(wordcounter):
        line = []
        strline = ''

        for k, v in dict.items():
            if v == i:
                line.append(k)
                strline.join(k.ljust(lenghtCounter))

        for el in line:
            strline += el.ljust(lenghtCounter + 5)
        print(strline)

tableData = [
    ['apples', 'oranges', 'cherries', 'bananas'],
    ['Alice', 'Bob', 'Carol', 'David'],
    ['dogs', 'cats', 'moose', 'goose']
]

printtable(tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
        ['Alice', 'Bob', 'Carol', 'David'],
        ['dogs', 'cats', 'moose', 'goose']]



def find_max_length(item_list):
    #find the length of the "item_list" parameter
    colWidth = [0] * len(item_list)

     #an empty list created to hold a single inner list from the                             #"item_list" parameter
     not_so_emptylist = []

    i = 0
    maxlength = 0 #variable to hold max length of an item in the inner list  

    for i in range(len(item_list)):
        not_so_emptylist = item_list[i]
        for item in not_so_emptylist:
            if len(item) > maxlength:
                maxlength = len(item)
        colWidth[i] = maxlength
        maxlength = 0

    return colWidth 

#an empty list to pass colwidth to
width = []

def print_table_data(a_list):
    width = find_max_length(a_list)

    i = 0

    for i in range(4):
        print(a_list[0][i].rjust(width[0]) + ' ' + a_list[1][i].rjust(width[1]) + ' ' + a_list[2][i].rjust(width[2]))

print_table_data(a_list=tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

def printTable(t):
    colWidths=[0] * len(tableData)
    l=[]
    for j in range(len(t)):
        for i in t[j]:
            l+=[len(i)]
        colWidths[j]= max(l)
        l=[]
    print(colWidths)

    for j in range(len(t[0])):
        for i in range(len(t)):
            print(t[i][j].rjust(colWidths[i]),end=' ')
        print(end='\n')

printTable(tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]


def printTable(mylist):
  #getting the item who has the max length in the inner tables
  maxLength = 0
  for item in mylist:
    for i in item:
      if len(i) > maxLength:
        maxLength = len(i)
      else:
        maxLength = maxLength
  # make a seperated rjust for every item in the inner lists
  for item in mylist:
    for i in range(len(item)):
      item[i] = (item[i].rjust(maxLength))
  # convert list to dictionary data type it's more easier to deal with.
  myNewlist = {0: [], 1: [], 2: [], 3: []}
  for i in range(len(item)):
    for u in tableData:
      myNewlist[i].append(u[i])
  # print the out put :) 
  for key, value in myNewlist.items():
    print(''.join(value))


(printTable(tableData))
def table_print(tabledata):
    column=[0]*len(tabledata)
    for k in  range(len(tabledata)):
        column[k]=len(max(tabledata[k],key=len))

    for i in range(len(tabledata[0])):
        for j in range(len(tabledata)):
            print(tabledata[j][i].rjust(column[j]+1),end="")
        print()
    return
table_Data = [['app', 'oranges', 'cherries', 'banana'],
['Ale', 'Bob', 'Crol', 'Dad'],
['dogs', 'cats', 'moose', 'ge']]
table_print(table_Data)
#!/usr/bin/python3
# you can think of x and y as coordinates

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

def printTable(table):
    # create a new list of 3 "0" values: one for each list in tableData
    colWidths = [0] * len(table)
    # search for the longest string in each list of tableData
    # and put the numbers of characters in the new list
    for y in range(len(table)):
        for x in table[y]:
            if colWidths[y] < len(x):
                colWidths[y] = len(x)

    # "rotate" and print the list of lists
    for x in range(len(table[0])) :
        for y in range(len(table)) :
            print(table[y][x].rjust(colWidths[y]), end = ' ')
        print()
        x += 1

printTable(tableData)
#! python3
# printTable.py - Displays a list in a well organized table

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]
columnWidth = [] # Creates a empty list

def printtable(printdata):
    for data in printdata:
        # Adds the length of the longest string to the columnWidth list
        columnWidth.append(len(max(data, key=len))) 
    # For loop to decide the determine the number of columns to cycle through
    for x, columnData in enumerate(printdata[0]): 
        # For loop for the number of rows to cycle through
        for y, rowData in enumerate(printdata): 
            # Print each row data with the correct justification
            print(printdata[y][x].rjust(columnWidth[y]), end=' ')
        # Create a new line before reiterating
        print('') 

printtable(tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

def printTable(table):
    table_len = []
    max_of_table = []
    next_item = ''
    for i in range(len(table)):
        temp_len = []
        for k in range(len(table[i])):
            temp_len.append(len(table[i][k]))
        table_len.append(temp_len)
    for b in table_len:
        max_of_table.append(max(b))
    for a in range(len(table[0])):
        for s in range(len(table)):
            next_item = str(table[s][a])
            next_item = next_item.rjust(max_of_table[s])
            print(next_item, end=' ')
        print('')

printTable(tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]
def printTable(table):
    colWidths = [0] * len(table) # The tip from the book
    for i in range(len(table)):
        for s in range(len(table[i])):
            l = len(table[i][s]) # get the length of the individual strings
            if colWidths[i] < l: # check wich one is the longest
                colWidths[i] = l # save the value in the list
    for x in range(len(table[0])):
        for y in range(len(table)):
            if y == len(table) - 1:
                print(table[y][x].rjust(colWidths[y], ' '))
            else:
                print(table[y][x].rjust(colWidths[y], ' '), end=' ')
printTable(tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
         ['Alice', 'Bob', 'Carol', 'David'],
         ['dogs', 'cats', 'moose', 'goose']]


def printTable(table):
liste = 0
colWidths = [0] * len(tableData)
for lister in table:
    liste = liste +1
    longest =0
    for strenge in lister:
        if len(strenge) > longest:
            longest = len(strenge)
    colWidths.insert((liste-1),longest)

for i in range(len(lister)):
    print()
    for lister in table:
        print (lister[i].rjust(colWidths[0]),end='')

printTable(tableData)
tableData = [['apples', 'oranges', 'cherries', 'banana'], 
             ['Alice', 'Bob', 'Carol', 'David'], 
             ['dogs', 'cats', 'moose', 'goose']]
n=0
x=''
colWidths=[0]*len(tableData)

for i in range(len(tableData)):
    for n in range(len(tableData[0])-1):
        if colWidths[i]<len(tableData[i][n])+1:
            colWidths[i]=len(tableData[i][n])+1

for n in range(len(tableData[n])):
    x=''
    for i in range(len(tableData)):
        x+=str(tableData[i][n]).rjust(colWidths[i])

    print(x)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

def printTable(myTable):

    #each column is a different width, so colWidth is a list which contains the width of each column
    #this is also suggested in the problem itself
    colWidth=[0]*len(myTable)
    for x in range(len(myTable)):
        for item in myTable[x]:
            if len(item)>colWidth[x]:
                colWidth[x]=len(item)

    #printing the table is similar to the exercise at the end of Chapter 4
    for a in range (len(myTable[0])):
        for b in range (len(myTable)):
            print (str(myTable[b][a]).rjust(colWidth[b]), end = ' ')
        print('\n')

printTable(tableData)
# table printer
def printtable(tabledata,columnwidth):
    for y in range(4):
        print()
        for x in range(len(tabledata)):
            print(tabledata[x][y].rjust(columnwidth),end='')
    tabledata=[['apples','oranges','cherries','banana'],. 
     ['Alice','Bob','Carol','David'],
     ['dogs','cats','moose','goose']]
    n=len(tabledata[0][0]
    for y in range(4):
        for x in range(len(tabledata)):
            if len(tabledata[0][0])>=len(tabledata[x][y]):
               False
           else:
               n=len(tabledata[x][y])
    printtable(tabledata,n)
tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

def printTable(tableData):

    finalList = []

    for i in range (0, 4):

        #iterate through each list in tableData    
        for lists in tableData:             

            #value of longest string in each list       
            longestValue = len(max(lists, key=len))

            #add each value list0[0], list1[0], etc. to finalList...             
            #width = longestValue  
            finalList += lists[i].rjust(longestValue) + "  "

            #skip to new line at end of sequence
            finalList += '\n'   

    #join list into a string for output    
    s = ''
    finalList = s.join(finalList) 

    #return final list as a formatted string
    print(finalList)                                            

printTable(tableData)
#! Python 3
#Table printer

tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]

def Tableprinter(tableData):
    listademax=[]
    for i in range(len(tableData)):
        listademax.append(len(max(tableData[i],key=len)))
    elmax=int(max(listademax))
    for m in range(len(tableData[0])):
        for n in range(len(tableData)):
            print(tableData[n][m].rjust(elmax),end=' ')
        print()

Tableprinter(tableData)