How to sequence numbers in text while looping

Question:

I’m trying to reach a way to print numbers in a specific way but I can’t, my code here

for i in range(7): # 7 it could be a string length for an example
    print("letter"+str(i)+",letter"+str(i+1)+"|letter"+str(i+1)+",letter"+str(i+2)+";")

will print:

letter0,letter1|letter1,letter2;
letter1,letter2|letter2,letter3;
letter2,letter3|letter3,letter4;
letter3,letter4|letter4,letter5;
letter4,letter5|letter5,letter6;
letter5,letter6|letter6,letter7;
letter6,letter7|letter7,letter8;

What output I need is like this:

letter0,letter1|letter1,letter2;
letter2,letter3|letter3,letter4;
letter4,letter5|letter5,letter6;
letter6,letter7|letter7,letter8;
letter8,letter9|letter9,letter10;
letter10,letter11|letter11,letter12;
letter12,letter13|letter13,letter0;

and letter0; should be the last one always

Asked By: Int Ver

||

Answers:

You can use the end argument when using print.

where = 0
for i in range(14):
    for _ in range(2):
        where += 1
        print(i, "|", end = "", sep = "")
        if where == 4:
            where = 0
            print(";")
Answered By: MatrixBytes

Maybe something like that would work:

for i in range(7): # 7 it could be a string length for an example
    e = i + 1
    f = i + 2
    g = i
    if i > 0:
        g += i
        f += i
        e += i
        if f == 14:
            f = 0
    print(f"letter{g}, letter{e}|letter{e},letter{f};")
Answered By: Mister Socke

Add readability with a string formatter. Use modulo arithmetic to fix the index of the last iteration.

n = 7

template = 'letter{},letter{}|letter{},letter{};'
counter = 0
for _ in range(n):
    s = template.format(counter, counter+1, counter+1, (counter+2) % 2*n)
    print(s)
    counter += 2
Answered By: cards
r = range(7)

for a, b in [(i, i + 1) for i in r][::2]:
    if b + 1 <= len(r):
        c = b + 1
    else:
        c = 0
    print(f"letter{a},letter{b}|letter{b},letter{c}")

result:

letter0,letter1|letter1,letter2
letter2,letter3|letter3,letter4
letter4,letter5|letter5,letter6
letter6,letter7|letter7,letter0
Answered By: Ronin
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.