python - 如何随机选择一个带有泡菜的文件?
问题描述
对于一个学校项目,我必须制作一个程序,从文件中随机选择一首歌曲并输入艺术家的姓名和歌曲名称,玩家必须填写艺术家姓名和歌曲名称的空白才能获得积分。
该项目的要求之一是它从文件夹中随机选择歌曲的文件,所以我尝试使用pickle
模块和turtle
模块 - 用于选项卡和输出程序的某个地方,如果这有意义并且我用词正确的话。
不幸的是,似乎没有很多事情。我最大的是因为我在代码中找到了歌曲,当它运行时它在选项卡中与它们重叠,我希望程序一次只显示一首歌曲并隐藏其余歌曲,直到用户猜到
这是我的代码:
import turtle
import os
import pickle
import random
#Screem
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("Main Screen")
#Border
border = turtle.Turtle()
border.speed(0)
border.penup()
border.color("white")
border.setposition(-300, -300)
border.pensize(3)
border.pendown()
for side in range(4):
border.fd(600)
border.lt(90)
border.hideturtle()
song1 = turtle.Turtle()
song1.color("white")
song1.penup()
song1.speed(0)
song1.setposition(-200, -200)
song1string = ("_ost malone _n god")
song1.write(song1string, False, align="Left", font=("Arial", "14", "normal"))
song1string2 = ("_minem _ap _od")
song1.write(song1string2, False, align="Left", font=("Arial", "14", "normal"))
song1.hideturtle()
song1.clear()
songs = []
songs.append(song1string)
songs.append(song1string2)
pickle.dump(songs, open("songs.py", "wb"))
songs = pickle.load(open("songs.py", "rb"))
final_song = random.choice("songs.py")
screen.mainloop()
解决方案
坦率地说,我不明白你的代码在做什么,也不明白你为什么要使用pickle
. 无论如何,以下带有# ALL CAP
注释的更改可能会有所帮助:
import turtle
import os
import pickle
import random
#Screem
screen = turtle.Screen()
screen.bgcolor("black")
screen.title("Main Screen")
#Border
border = turtle.Turtle()
border.speed(0)
border.penup()
border.color("white")
border.setposition(-300, -300)
border.pensize(3)
border.pendown()
for side in range(4):
border.fd(600)
border.lt(90)
border.hideturtle()
song1 = turtle.Turtle()
song1.color("white")
song1.penup()
song1.speed(0)
song1.setposition(-200, -200)
song1string = ("_ost malone _n god")
song1.write(song1string, False, align="Left", font=("Arial", "14", "normal"))
song1.setposition(-200, -180) # ADDED SO NEXT ONE IS ON DIFFERENT LINE
song1string2 = ("_minem _ap _od")
song1.write(song1string2, False, align="Left", font=("Arial", "14", "normal"))
song1.hideturtle()
#song1.clear() # DISABLED
songs = []
songs.append(song1string)
songs.append(song1string2)
pickle.dump(songs, open("songs.pkl", "wb")) # Changed file name.
songs = pickle.load(open("songs.pkl", "rb")) # Changed file name.
final_song = random.choice(songs) # CHANGED TO SELECT ONE FROM UNPICKLED LIST.
print('final_song: {!r}'.format(final_song)) # ADDED
screen.mainloop()
推荐阅读
- ios - 快速调用函数内部的函数
- javascript - 使用 firestore 获取更新的值
- flutter - dart Grpc 的拦截器
- google-cloud-platform - 由于 VPC 连接器注释,部署 Cloud Run 服务失败
- php - Symfony 5 缓存组件 AWS elasticache 无效 DSN
- php - Yii2 - 下载损坏的文件
- delphi - Indy TIdHashMessageDigest5 HashStringAsHex 编译时错误:未声明的标识符:'HashStringAsHex'
- java - 为什么握手后我的套接字关闭了,我该如何解决这个问题?
- c# - 如何对将在多个步骤中创建的聚合进行建模,例如向导样式
- azure - 将 Azure 数字孪生与现有云环境连接