我目前正在执行一项任务,用户输入一段时间(例如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分钟)并且它生成的播放列表不会持续超过此时间",这是我应该做的。如果没有只添加一首歌,我怎么能让它比这次更长?
提前致谢!
答案 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)