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

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. No Profile Picture
Contributing User
Devshed Newbie (0 - 499 posts)

Join Date
Jul 2007
Location
Joensuu, Finland
Posts
438
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.
3. Case sensitive python distinguishes between y and Y . Could have been transcription typo.
4. No Profile Picture
Contributing User
Devshed Novice (500 - 999 posts)

Join Date
May 2009
Posts
509
Rep Power
33
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 10:42 AM.