# Re: How make the judge with for loop?

```38016226...@gmail.com wrote:

> c="abcdefghijk"
> len=len(c)
> n is a int
> sb=[[] for i in range(n)]
>
>     while (i < len) {
>         for (int j = 0; j < n && i < len; j++)
>             sb[j].append(c[i++]);
>         for (int j = n-2; j >= 1 && i < len; j--) //
>             sb[j].append(c[i++]);
>     }
>
> How to translate to python? I tried but my python code is really stupid```
```
It would still be good to provide it or a least a complete runnable C
source. A description of the problem in plain English would be helpful, too.

What follows are mechanical translations of what I think your original C
code does.

(1) You can use a while loop to replace C's for

# example: first for loop
j = ;
while j < n and i < length:
sb[j].append(chars[i])
i += 1
j += 1

which should be straight-forward, or

(2) you can run a for loop until an exception is raised:

chars = "abcdefghijk"
...
chars = iter(chars)
try:
while True:
for sublist in sb[:n]:
sublist.append(next(chars))
for sublist in sb[n-2: 0: -1]:
sublist.append(next(chars))
except StopIteration:
pass # we ran out of characters

(3) If you concatenate the two list slices into one, and with a little help
from the itertools (while True... becomes itertools.cycle()) you get:

up = sb[:n]
down = sb[n-2: 0: -1]

for sublist, c in zip(cycle(up + down), chars):
sublist.append(c)

(All untested code, you should check especially the slice indices)

--
https://mail.python.org/mailman/listinfo/python-list
```