Hello Your code is concise and neat.It will take some time for me to understand how it is doing the job. Thank you
>You have a lot of duplicated code. You can reduce the duplication by >using functions and loops. >The first step is to put all the print code into a function rather >than repeating the same three formatting expressions over and over: >def show(x, y): > print '%3d'%(x),'x','%3d'%(y),'=','%3d'%(x*y),(' '*5), >Then mtab() can be written like this: >def mtab(*arg): > for x in range(1,11): show(x, arg[0]) show(x, arg[1]) show(x, arg[2]) print print(('-')*10).center(78) for x in range (1,11): show(x, arg[3]) show(x, arg[4]) show(x, arg[5]) print >Now you can see that the show() statements are still repetitive, they >can be put into a loop: >def mtab(*arg): > for x in range(1,11): for i in range(0, 3): show(x, arg[i]) print print(('-')*10).center(78) for x in range (1,11): for i in range(3, 6): show(x, arg[i]) print >This is OK except the interface is awkward; do you really want to tell >it each number for the table, or would you rather give it a range of >numbers? Also you can use another loop to eliminate the duplicated >printing of the tables: >def mtab(lower, upper): for start in range(lower, upper+1, 3): for x in range(1,11): for y in range(start, start+3): show(x, y) print print(('-')*10).center(78) >mtab(1, 11) >This does not give quite the same result as your original - it prints >the divider after each table - and it always prints three tables per >group, even if you didn't ask for it - but it is much simpler and more >flexible than your original. >Kent
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor