我如何打印列表中的项目,直到达到一定数量的行

时间:2019-06-30 08:04:17

标签: python python-3.x

我正在进行编码练习,在该编码练习中,您忘记了歌曲的歌词,并且在打印了一定数量的诗句之后,代码会打印“我放弃”。我需要创建代码来一次又一次地在列表中逐行打印歌词,直到命中一定数量的行,然后打印“我放弃”。我被困住了,试图弄清楚如何为每个变量打印x行数,但我只是想出了如何打印列表x次数。

我已经弄清楚了如何打印x列表,但我不知道如何仅从变量中打印x行。

lyrics = ["I wanna be your endgame", "I wanna be your first string",
          "I wanna be your A-Team", "I wanna be your endgame, endgame"]

lines_of_sanity = 6

for x in range(lines_of_sanity):
    for i in (lyrics):
        print(i)

它会打印完整的歌词列表6次,但我需要打印6次歌词列表中的元素,然后继续直到歌词完成并打印(“我放弃”)

给定变量的正确代码应为:

  

我想成为你的绝望
  我想成为你的第一根弦
  我想成为你的A队
  我想成为你的残局,残局
  我想成为你的残局
  我想成为你的第一根弦
  我想成为你的A队
  我想成为你的残局,残局
  我放弃

2 个答案:

答案 0 :(得分:2)

听起来您想重复完整的歌词,至少要打印一些行。因此,在这种情况下,您将打印完整歌词两次。您可以使用以下方法计算数字:

times = math.ceil(6/len(lyrics)) 

使用此方法的一种好方法是将itertools.repeatitertools.chain.from_iterable()一起使用。放在一起看起来像:

from itertools import chain, repeat
import math

lyrics = ["I wanna be your endgame", "I wanna be your first string",
          "I wanna be your A-Team", "I wanna be your endgame, endgame"]

lines_of_sanity = 6
times = math.ceil(lines_of_sanity/len(lyrics))

for l in chain.from_iterable(repeat(lyrics, times)):
    print(l)
print("I GIVE UP")

将打印2整节经文,然后放弃。

答案 1 :(得分:1)

这是您的意思吗?抱歉,这不是您的意思...

lyrics = ["I wanna be your endgame", "I wanna be your first string",
      "I wanna be your A-Team", "I wanna be your endgame, endgame"]

lines_of_sanity = 6

for i in range(lines_of_sanity):
    print(lyrics[i%len(lyrics)])

print("I GIVE UP")

针对您的评论,也许有人可以简化

for i in range(lines_of_sanity+len(lyrics)-(lines_of_sanity%len(lyrics))):
    print(lyrics[i%len(lyrics)])

print("I GIVE UP")