如何对random.choices选取内容求和?歌曲列表时长求和求助
问题解决:随机选取3首歌曲时长求和错误修复
错误原因
- 未定义变量
time:你的代码中使用了time变量,但从未对其赋值,应该从已有的my_favorite_songs列表中提取数据。 - 直接对列表求和无效:即便你替换变量为
my_favorite_songs,random.choices返回的是3个包含歌曲名和时长的子列表,sum()函数无法直接对列表类型的元素求和,必须提取子列表中的时长数值。
修复后的代码示例
方法一:先提取时长列表再随机选择
import random my_favorite_songs = [ ['Waste a Moment', 3.03], ['New Salvation', 4.02], ['Staying\' Alive', 3.40], ['Out of Touch', 3.03], ['A Sorta Fairytale', 5.28], ['Easy', 4.15], ['Beautiful Day', 4.04], ['Nowhere to Run', 2.58], ['In This World', 4.02], ] # 提取所有歌曲的时长到单独列表 song_durations = [song[1] for song in my_favorite_songs] # 随机选3个时长并求和 total_duration = sum(random.choices(song_durations, k=3)) print(total_duration)
方法二:先选歌曲再提取时长求和
import random my_favorite_songs = [ ['Waste a Moment', 3.03], ['New Salvation', 4.02], ['Staying\' Alive', 3.40], ['Out of Touch', 3.03], ['A Sorta Fairytale', 5.28], ['Easy', 4.15], ['Beautiful Day', 4.04], ['Nowhere to Run', 2.58], ['In This World', 4.02], ] # 随机选取3首歌曲 selected_songs = random.choices(my_favorite_songs, k=3) # 提取每首歌的时长并求和 total_duration = sum(song[1] for song in selected_songs) print(total_duration)
内容的提问来源于stack exchange,提问作者rrenyaa
相关产品推荐
相关产品推荐

