如何在可变时间限制之前使计数器停止,因此它不会超过它?

时间:2017-12-11 21:11:05

标签: python python-3.x list

我目前正在执行一项任务,用户输入一段时间(例如5分钟)并生成一个“播放列表”。它创建一个2D数组,包括名称,艺术家,流派和时间长度。到目前为止,这是我的代码:

import random
import csv

playlist = []

timelimit = int(input("How long would you like the playlist to be: \n>> "))
data = list(csv.reader(open("song.csv")))
counter = 0

while True:
    random_song = random.choice(data)
    playlist.append(random_song)
    index = playlist.index(random_song)
    num = int(playlist[index][3])
    counter += num
    if counter >= timelimit:
        break

print(playlist)

"用户输入时间限制(例如10分钟)并且它生成的播放列表不会持续超过此时间",这是我应该做的。如果没有只添加一首歌,我怎么能让它比这次更长?

提前致谢!

2 个答案:

答案 0 :(得分:0)

while True:
    random_song = random.choice(data)
    index = data.index(random_song)     
    num = int(data[index][3])
    counter += num
    if counter >= timelimit:
        break
    playlist.append(random_song)

通过将.append移动到休息状态之后,它不会附加一首破坏条件的歌曲。唯一不能100%肯定的是数据的格式(请注意,我现在从数据而不是播放列表中获取索引和数字),因此num可能无法计算。如果失败,请尝试自己生成num的方法,而无需先添加歌曲。

答案 1 :(得分:0)

我添加了一个单独的计数器,其中数字被减去并从列表中删除随机歌曲。这是代码,我补充说,变量newtime和其他一切都是基于它。

import random
import csv

playlist = []

timelimit = int(input("How long would you like the playlist to be: \n>> "))
data = list(csv.reader(open("song.csv")))
counter = 0
newtime = timelimit

while True:
    random_song = random.choice(data)
    playlist.append(random_song)
    index = playlist.index(random_song)
    num = int(playlist[index][3])
    newtime -= num
    if newtime < 0:
        playlist.remove(random_song)
    counter += num
    if counter >= timelimit:
        break

print(playlist)