#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jan 2013
    Posts
    1
    Rep Power
    0

    What is wrong with my multiplication table code? (New to Python)


    Hello. I've been learning Python from Udacity.com and was told to create multiplication table following this format:
    Code:
    print_multiplication_table(2)
    #1 x 1 = 1
    #1 x 2 = 2
    #2 x 1 = 2
    #2 x 2 = 4
    This is my code:
    Code:
    def print_multiplication_table(n):
        x = 1
        y = 1
        sx = str(x)
        sy = str(y)
        equation = sx + " * " sy + " = " str(sx * sy)
        while x <= n:
            while y <= x:
                print equation
                Y += 1
                print equation
            x += 1
            y = 1
    This returns an output of:
    Code:
    1 * 1 = 1
    1 * 1 = 1
    1 * 1 = 1
    1 * 1 = 1
    1 * 1 = 1
    1 * 1 = 1
    What is causing this? I have access to the answer to the problem, but I don't want it solved for me. I'd like to know what is causing this output so I can work around it and finish the question. Thanks in advance.
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jul 2007
    Location
    Joensuu, Finland
    Posts
    439
    Rep Power
    67
    Originally Posted by Dried Monkey
    Code:
    def print_multiplication_table(n):
        x = 1
        y = 1
        sx = str(x)
        sy = str(y)
        equation = sx + " * " sy + " = " str(sx * sy)
        while x <= n:
            while y <= x:
                print equation
                Y += 1
                print equation
            x += 1
            y = 1
    What is causing this?
    It doesn’t matter how many times you change the values of x and y, because when the value of the variable “equation” was set, x and y were both 1.

    Anyway, if I may suggest some ideas:

    • it is usually unnecessary to have separate variables for numeric values and their printable counterparts; just use print formatting (.format() or the older % method)
    • it’s usually bad practice to create results and produce output in the same function; in most cases it’s more convenient to have one function produce results and another to print the output.
    My armada: openSUSE 13.2 (home desktop, work desktop), openSUSE 13.1 (home laptop), Debian GNU/Linux 7.7.0 (mini laptop), Ubuntu 14.04 LTS (server), Android 4.2.1 (tablet), Windows 7 Ultimate (testbed)
  4. #3
  5. Contributing User
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Aug 2011
    Posts
    4,996
    Rep Power
    481
    Case sensitive python distinguishes between y and Y . Could have been transcription typo.
    [code]Code tags[/code] are essential for python code and Makefiles!
  6. #4
  7. No Profile Picture
    Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    May 2009
    Posts
    530
    Rep Power
    34
    See if this gives you any ideas on how to do it
    Code:
    n=3
    
    for x in range(1, n):
        for y in range(1, n):
            print x, y
    Also, I would suggest that you print str(sx * sy) as strings and numbers define "multiply" differently
    Code:
        sx = str(x)
        sy = str(y)
        equation = sx + " * " sy + " = " str(sx * sy)
    Last edited by dwblas; January 22nd, 2013 at 11:42 AM.

IMN logo majestic logo threadwatch logo seochat tools logo