0

I'm trying to create a table that looks like this:

 0 1 2 3 4 5 6 7 8 9
 10 11 12 13 14 15 16 17 18 19
 20 21 22 23 24 25 26 27 28 29
 30 31 32 33 34 35 36 37 38 39
 40 41 42 43 44 45 46 47 48 49

I was able to get it done by doing this:

for x in range(0, 50, 10):
    print(x, x + 1, x + 2, x + 3, x + 4, x + 5, x + 6, x + 7, x + 8, x + 9)

But it seems like this definitely isn't the most efficient way to do it. I've tried adding:

    # for y in range(1, 10):
        # print(x, x + y)

after the first for loop in my original code, but it doesn't work.

Thank you!

Amanda Treutler
  • 143
  • 4
  • 12
  • 1
    For future reference, "it doesn't work" is not a valid description of a problem - see [How to Ask](https://stackoverflow.com/help/how-to-ask). You have a range of options - e.g. (1) use `" ".join(...)` on the list of numbers in each row, or (2) `print` with the argument `end=" "` to avoid creating a new line for every number. – meowgoesthedog Mar 27 '19 at 16:28
  • Sorry about that, thank you for letting me know! – Amanda Treutler Mar 27 '19 at 16:30
  • You might want to take a look at [this question](https://stackoverflow.com/q/312443/3767239). – a_guest Mar 27 '19 at 16:34

2 Answers2

2

You can use a for loop and join a list comprehension for each row to print your table.

for i in range(0, 50, 10):
    print(' '.join([str(j) for j in range(i, i + 10)]))

Similarly, you can unpack a row as a list into the print method's parameters.

for i in range(0, 50, 10):
    print(*[j for j in range(i, i + 10)])
tdurnford
  • 3,632
  • 2
  • 6
  • 15
1

You can specify the end parameter of the print() function:

for x in range(50):
    if (x+1)%10 == 0:
        end_char = "\n"
    else:
        end_char = " "
    print(x,end=end_char)

OUTPUT:

0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49

The print() function add a new line at the end of each statement by default, but you can modify how the string should end: "\n" (new line) if the next number is divisible for 10, " " (a space) otherwise

Gsk
  • 2,929
  • 5
  • 22
  • 29