#!/usr/bin/python3

# Print a multiplication table, an in-class example for CS 151
#
# Authors:     Jeff Kinne, jkinne@cs.indstate.edu
# Change-log:
#  23-Aug-2019 - initial code, print 10x10
#  30-Sep-2019 - separated code into functions
#              - made generic so can run different sized tables
#              - put in comments like I would like students to use for projects
#
# Starting point:  code was from scratch, no other starting point
# Sources:         none
# Assistance from: nobody
#
# To use:          Set the value of n below the function definitions
#                  and then run with - python3 multiply.py or ./multiply.py


# Note - this file contains comments in the style that the 9am section is
#  supposed to use.  See cs.indstate.edu/cs151/study.html for details.


# Print a head line for a multiplication table
#   n - length/width of the table (goes 0 to n)
def headerLine(n):
    print(' \t', end='')
    
    # print from 0 to n with tabs in between
    for y in range(0, n+1):
        print(y, '\t', end='')
    print('')
    
    # print a row of ------
    print('-'*(8*(n+2)))

    
# Print a line from a multiplication table
#   n - length/width of the table (goes 0 to n)
#   x - which row to print (will print x*0, x*1, x*2, ...)
def multiplyLine(n, x):
    # print x| as the label for the row
    print(x, '|\t', end='')
    
    # print x*0, x*1, ..., x*n
    for y in range(0, n+1):
        print(x*y, '\t', end='')
    print('')

    
# pick a value of n, we could also do n = int(input())
n = 5

# print a header line and then all the rows of the table
headerLine(n)
for x in range(0, n+1):
    multiplyLine(n, x)