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
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(";")
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};")
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
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
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
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(";")
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};")
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
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