你好,我是雨霖八珞,同名B站UP主。关注合集不迷路。以下内容为个人教学,真诚分享,欢迎交流。

上篇文章我们讲到,列表就像哆啦A梦的大口袋,什么都能装。
今天,我们就从口袋里掏出 —— 猜歌名游戏!
一首歌有哪些信息?歌名、歌手、评分、歌词片段、时长……这些信息的类型不一样(文字、小数、整数),而列表能把它们装在一起。
先来看看一首歌怎么表示:
song列表存放了不同类型的数据:字符串、浮点数、整数。列表能把不同类型的数据装在一起,这就是它的“包容性”。
可以通过song[0]来访问"青花瓷",song[1]来访问"周杰伦",以此类推。
一个变量song只能放一首歌,那五首歌就需要五个变量吗?
当然不需要!
既然列表无所不装,当然列表也可以装列表了。
songs也是一个列表,里面存放了五个列表。
songs就是提前设计好的歌库。
先别写代码,先想清楚游戏怎么玩:
1、从歌库里随机抽一首歌
2、把这首歌的歌手、评分、歌词片段、时长展示出来(不显示歌名)
3、让玩家输入猜的歌名
4、判断:猜对了加10分,猜错了公布正确答案
5、重复以上步骤 3次
6、最后显示总分
这是“算法思路” ,是编程前的必经步骤。像写作文之前先列提纲一样。以后程序会越来越复杂,在编写程序之前都需要把算法描述出来。我们以后也会介绍经典的算法。
流程清晰了,再看整体结构,因为需要重复三次,所以用到for循环:
for i in range(3):
随机挑歌
显示歌的信息(除了歌名)
让用户猜歌名
如果答对了,加分,否则显示正确歌名
接下来把每个步骤拆开来看。
1、歌库songs设计好了,怎么随机抽一首歌呢?
需要用到 random 模块
random.choice(songs) :从列表songs中随机挑一个元素
songs.remove(song):为了防止下一次抽到相同的元素,可以挑完之后删除该元素。
2、如何展示歌的信息(除了歌手信息)

songs列表比较复杂,里面又包含了列表。
song = random.choice(songs)
从列表songs中随机挑一个元素,也就是说可能挑到songs[0]到songs[4]中的任何一个。只需要展示song[1] ~ song[4]就可以了。
3、如何判断与计分
玩家输入歌名后,怎么判断对不对?
玩家输入的歌名存放到guess变量中,将guess变量和song[0](即存放歌手的变量)比较,如果正确,加分,输出信息,如果错误,直接显示正确的歌手名。
注意:
程序代码如下:
运行结果如下:
列表的应用非常广泛。几乎任何需要“存放多个数据”的场景,都可以用列表。- 所有歌曲的信息能否放在一个文件里,通过程序语句导入到列表中;
- 增加互动性,根据得分评等级。满分30分→“🏆 歌神”,20分→“🎤 K歌达人”,10分→“🎵 继续加油”
本公众号内容均为原创。如需转载或引用,请先联系我。谢谢你的尊重。
觉得不错的话,伙伴们记得关注、在看、转发和点赞哈!