首页 > 解决方案 > 如何随机选择一个带有泡菜的文件?

问题描述

对于一个学校项目,我必须制作一个程序,从文件中随机选择一首歌曲并输入艺术家的姓名和歌曲名称,玩家必须填写艺术家姓名和歌曲名称的空白才能获得积分。

该项目的要求之一是它从文件夹中随机选择歌曲的文件,所以我尝试使用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()

标签: pythonpickleturtle-graphicspython-3.8

解决方案


坦率地说,我不明白你的代码在做什么,也不明白你为什么要使用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()

推荐阅读