• 周一. 6月 24th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

如何让代码问另一个问题并存储到最后

[db:作者]

3月 7, 2023

我在学校做一个项目,要求我用python做一个音乐测试,它读取一个文件,显示歌曲每个单词的首字母和艺术家(例如Dave F)。在我的文件中,我有一个10首歌名的列表,python在其中随机获取一行并进行显示。它必须从一个文件(我是记事本)的用户必须有2次机会猜测歌曲的名称,如果他们没有那么游戏结束。我的问题是我不能让我的代码问另一个问题,并存储最后一个问题,这样它就不会再问了(例如,如果第一个问题是Dave和F F,我希望它不要再出现)。如果有人教我如何让python显示排行榜,我也会非常感激。答案可以是完整的代码与改进,因为我不擅长缩进和把代码放在正确的地方。你知道吗

我已经给了用户2个机会,让歌曲的权利,如果他们没有那么程序结束,但不循环开始。你知道吗

import random

with open("songlist.txt", "r") as songs_file:
    with open("artistlist.txt", "r") as artists_file:
        songs_and_artists = [(song.rstrip('\n'), artist.rstrip('\n'))
                             for (song, artist) in zip(songs_file,     artists_file)]

random_song, random_artist = random.choice(songs_and_artists)
songs_intials = "".join(item[0].upper() for item in random_song.split())


print("The songs' initials are", songs_intials, "and the name of the artist is", random_artist)


nb_tries_left = 3
guess = input("Guess the name of the song! ")
nb_tries_left -= 1

finished = False
while not finished:
    answer_found = (guess == random_song)
    if not answer_found:
        guess = input("Nope! Try again! ")
        nb_tries_left -= 1
    elif answer_found:
        print("The songs' initials are", songs_intials, "and the name of the artist is", random_artist)

    finished = (answer_found or nb_tries_left <= 0) 

if answer_found:

歌曲的首字母是LT,艺术家的名字是Fredo
猜猜这首歌的名字!就像那样
歌曲的首字母是LT,艺术家的名字是Fredo
做得好!你知道吗

Python不会再问另一个问题,我也不知道会不会是那个问题。你知道吗

故意弄错的结果是:

The songs' initials are CS and the name of the artist is 50 Cent
Guess the name of the song! candysong
Nope! Try again! carpetshop
Nope! Try again! coolsong
Sorry, you've had two chances. Come back soon!
>>> 

Tags:

andoftheanswernamesongartistrandom歌曲filenbfoundsongstriesartists2条回答网友

1楼 ·

编辑于 2023-03-06 23:31:11

为了在每场比赛中问一个以上的问题,你必须这样做:

with open("songlist.txt", "r") as songs_file:
        with open("artistlist.txt", "r") as artists_file:
            songs_and_artists = [(song.rstrip('\n'), artist.rstrip('\n'))
                            for (song, artist) in zip(songs_file,     artists_file)]

def getSongAndArtist():
    randomIndex = random.randrange(0, len(songs_and_artists))
    return songs_and_artists.pop(randomIndex)


while(len(songs_and_artists) > 0):
    random_song, random_artist = getSongAndArtist()
    #play game with the song

您可以将歌曲列表保存在python列表中,并且只要有更多的歌曲可以播放,就可以在每一轮中随机弹出一首歌曲。你知道吗

对于排行榜,你必须在开始游戏前询问一个用户名,并保存一个用户名和他们的分数列表,然后选择排名靠前的。你还应该弄清楚如何给用户打分

网友

2楼 ·

编辑于 2023-03-06 23:31:11

首先你想得到2首独特的歌曲。为此,可以使用random.sample。对于您的用例,它是

indexes = random.sample(range(len(songs_and_artists)), 2) # 2 random songs (sampling without replacement)
# song 1
random_song, random_artist = songs_and_artists[indexes[0]]
# song 2
random_song, random_artist = songs_and_artists[indexes[1]]

另外,我建议您将代码放到函数中,并将其用于每首选定的歌曲。你知道吗

《如何让代码问另一个问题并存储到最后》有180个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注