[Tutor] if you're interested in the code thus far...

Peter Otten __peter__ at web.de
Mon Oct 27 10:39:46 CET 2014


Clayton Kirkwood wrote:

> Good eyes on the logic
> 
> 
> !-----Original Message-----
> !From: Tutor [mailto:tutor-bounces+crk=godblessthe.us at python.org] On
> !Behalf Of Peter Otten
> !Sent: Sunday, October 26, 2014 3:53 AM
> !To: tutor at python.org
> !Subject: Re: [Tutor] if you're interested in the code thus far...
> !
> !Clayton Kirkwood wrote:
> !
> !> for description_position, code_position in zip(description, code):
> !>     description_position_len = len(description_position)
> !>     current_output_pos += description_position_len
> !>     if current_output_pos >= output_line_len:
> !>         print(description_output_string)
> !>         print(code_output_string)
> !>         code_output_string=description_output_string=''
> !>         current_output_pos=-1   #start new line
> 
> Changing this line to current_ouput_pos = description_position_len
> I believe I was losing the next lines final field on each subsequent line

There's no need to guess. Run the code with a small test dataset and compare 
the actual output with manually determined output.
To make this approach feasible it is better to put the formatting algorithm 
into a function rather than to print() the lines directly. Here's a sketch:

def format_output(pairs, width):
    ... # your code building lines from the pairs

expected = [
"abc|de|",
"x  |y |",
"1234567|"
"z      |"
]

got = format_output([
   ("abc", "x"), 
   ("de", "y"),
   ("1234567", "z"),
], 9)

if got != expected:
    print("expected", expected)
    print("got", got)
    raise AssertionError

Once you start doing this for all your code you should have a look at

https://docs.python.org/dev/library/unittest.html



More information about the Tutor mailing list