如何在循环中对文本中的数字进行排序

huangapple go评论98阅读模式
英文:

How to sequence numbers in text while looping

问题

我试图找到一种以特定方式打印数字的方法,但我无法做到,我的代码如下:

  1. for i in range(7): # 7 可以是字符串的长度,例如
  2. print("letter"+str(i)+",letter"+str(i+1)+"|letter"+str(i+2)+",letter"+str(i+3)+";")

将打印出以下内容:

  1. letter0,letter1|letter1,letter2;
  2. letter1,letter2|letter2,letter3;
  3. letter2,letter3|letter3,letter4;
  4. letter3,letter4|letter4,letter5;
  5. letter4,letter5|letter5,letter6;
  6. letter5,letter6|letter6,letter7;
  7. letter6,letter7|letter7,letter8;

我需要的输出如下:

  1. letter0,letter1|letter2,letter3;
  2. letter4,letter5|letter6,letter7;
  3. letter8,letter9|letter10,letter11;
  4. letter12,letter13|letter0,letter1;

并且letter0; 应始终是最后一个。

英文:

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

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

will print:

  1. letter0,letter1|letter1,letter2;
  2. letter1,letter2|letter2,letter3;
  3. letter2,letter3|letter3,letter4;
  4. letter3,letter4|letter4,letter5;
  5. letter4,letter5|letter5,letter6;
  6. letter5,letter6|letter6,letter7;
  7. letter6,letter7|letter7,letter8;

What output I need is like this:

  1. letter0,letter1|letter1,letter2;
  2. letter2,letter3|letter3,letter4;
  3. letter4,letter5|letter5,letter6;
  4. letter6,letter7|letter7,letter8;
  5. letter8,letter9|letter9,letter10;
  6. letter10,letter11|letter11,letter12;
  7. letter12,letter13|letter13,letter0;

and letter0; should be the last one always

答案1

得分: 1

  1. result:
  2. letter0,letter1|letter1,letter2
  3. letter2,letter3|letter3,letter4
  4. letter4,letter5|letter5,letter6
  5. letter6,letter7|letter7,letter0
英文:
  1. r = range(7)
  2. for a, b in [(i, i + 1) for i in r][::2]:
  3. if b + 1 <= len(r):
  4. c = b + 1
  5. else:
  6. c = 0
  7. print(f"letter{a},letter{b}|letter{b},letter{c}")

result:

  1. letter0,letter1|letter1,letter2
  2. letter2,letter3|letter3,letter4
  3. letter4,letter5|letter5,letter6
  4. letter6,letter7|letter7,letter0

答案2

得分: 0

你可以在使用 print 时使用 end 参数。

  1. where = 0
  2. for i in range(14):
  3. for _ in range(2):
  4. where += 1
  5. print(i, "|", end = "", sep = "")
  6. if where == 4:
  7. where = 0
  8. print(";")
英文:

You can use the end argument when using print.

  1. where = 0
  2. for i in range(14):
  3. for _ in range(2):
  4. where += 1
  5. print(i, "|", end = "", sep = "")
  6. if where == 4:
  7. where = 0
  8. print(";")

答案3

得分: 0

也许类似这样的代码会起作用:

  1. for i in range(7): # 7 可以是一个字符串的长度示例
  2. e = i + 1
  3. f = i + 2
  4. g = i
  5. if i > 0:
  6. g += i
  7. f += i
  8. e += i
  9. if f == 14:
  10. f = 0
  11. print(f"letter{g}, letter{e}|letter{e},letter{f};")
英文:

Maybe something like that would work:

  1. for i in range(7): # 7 it could be a string length for an example
  2. e = i + 1
  3. f = i + 2
  4. g = i
  5. if i > 0:
  6. g += i
  7. f += i
  8. e += i
  9. if f == 14:
  10. f = 0
  11. print(f"letter{g}, letter{e}|letter{e},letter{f};")

答案4

得分: 0

使用字符串格式化增加可读性。使用模除运算修复最后迭代的索引。

  1. n = 7
  2. template = 'letter{},letter{}|letter{},letter{};'
  3. counter = 0
  4. for _ in range(n):
  5. s = template.format(counter, counter+1, counter+1, (counter+2) % (2*n))
  6. print(s)
  7. counter += 2
英文:

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

  1. n = 7
  2. template = 'letter{},letter{}|letter{},letter{};'
  3. counter = 0
  4. for _ in range(n):
  5. s = template.format(counter, counter+1, counter+1, (counter+2) % 2*n)
  6. print(s)
  7. counter += 2

huangapple
  • 本文由 发表于 2023年1月8日 22:59:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/75048782.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定