[nfbcs] Stuck on a Practice Project for Learning Python 3

Jim Barbour jbar at barcore.com
Sun Aug 26 19:38:46 UTC 2018


First let me say that I wrote this on my iPhone and have no way of testing it. But, I think the following will do what you want.  Note that longest is a function that needs to be written that takes a list of strings and returns the length of the longest one.

If it doesn’t work, it might give you a place to start, or at least be inspirational :-). 

Take care,

Jim

For I in 0..length(TableData) - 1: 
  ColWidths[i] = Longest([x[i] for x in TableData]

Sent from my iPhone

> On Aug 26, 2018, at 12:02 PM, Lanie Molinar via nfbcs <nfbcs at nfbnet.org> wrote:
> 
>     Hi, everyone. I've been teaching myself Python 3 using the free online version of a book called "Automate the Boring Stuff with Python." I just finished learning about working with strings, so I'm now trying to do one of the practice projects, but I'm completely stuck on it and not sure how to get started. I'm supposed to print a table using the instructions below:
> 
> 
>  Table Printer
> Write a function named printTable() that takes a list of lists of strings and displays it in a well-organized table with each column right-justified. Assume that all the inner lists will contain the same number of strings. For example, the value could look like this:
> 
> tableData = [['apples', 'oranges', 'cherries', 'banana'],
>              ['Alice', 'Bob', 'Carol', 'David'],
>              ['dogs', 'cats', 'moose', 'goose']]
> Your printTable() function would print the following:
> 
>   apples Alice  dogs
>  oranges   Bob  cats
> cherries Carol moose
>   banana David goose
> Hint: Your code will first have to find the longest string in each of the inner lists so that the whole column can be wide enough to fit all the strings. You can store the maximum width of each column as a list of integers. The printTable() function can begin with colWidths = [0] * len(tableData), which will create a list containing the same number of 0 values as the number of inner lists in tableData. That way, colWidths[0] can store the width of the longest string in tableData[0], colWidths[1] can store the width of the longest string in tableData[1], and so on. You can then find the largest value in the colWidths list to find out what integer width to pass to the rjust() string method.
> 
> 
> I think what has me stumped right now is how to find the longest string in each of the inner lists. I know about the max() function, but I can't seem to figure out how to use that on all the items in each list. Can anyone help me understand what I need to do here? Thanks.
> 
> 
> _______________________________________________
> nfbcs mailing list
> nfbcs at nfbnet.org
> http://nfbnet.org/mailman/listinfo/nfbcs_nfbnet.org
> To unsubscribe, change your list options or get your account info for nfbcs:
> http://nfbnet.org/mailman/options/nfbcs_nfbnet.org/jbar%40barcore.com
> 





More information about the NFBCS mailing list