Привет. Я пишу музыкальную викторину на Python. Правильные ответы не проверяются, и я понятия не имею, почему

Моя музыкальная викторина берет список песен из внешнего файла с именем «Songs.txt» и берет первую букву каждого слова в одной песне (из 7, выбранных случайным образом), а затем отображает исполнителя этой песни. Затем у пользователя есть два предположения, и затем начисляются соответствующие баллы:

# MUSIC QUIZ GAME

import random
# Import the 'random' function in order to select a random number and get a random song.
import time
# Importing the ability to 'pause' to give the program a more professional feel.
import sys
# Import the ability to close the program.
import linecache
# Import the ability to get a specific line from a file.

userscore = 0
# The userscore is automatically zero, because they have just started playing.

random_picker = random.randint(1,7)
# Using the random operator, we pick a random number from 1 to 5, because there are 5 songs. We will use this to select the same random line from two files.
# ----- Accessing the Songs database ----- #
     # Open the file.
file = open("Songs.txt", "r")
     # Get the line from file. The line number is determined by the 'random_picker' used earlier.
song = linecache.getline(r"Songs.txt", random_picker).upper()
     # Split the line into individual words.
song_prompt = song.split()

# ----- Accessing the Artists database ----- #
file = open("Artists.txt", "r")
artist = linecache.getline(r"Artists.txt", random_picker)

# -----Giving the user the prompt ----- #
print("\nYour prompt is: ")

# Get only the first letter of each word in the prompt, then output them.
for word in song_prompt:
    print(word[0])
print("by " + artist)

guess1 = input("Enter your song name guess:\n")

if guess1 == song:
     print("Well done!")
     userscore = userscore + 3
     print("Your score is " + str(userscore) + ".")
  
elif guess1 != song:
     print("Wrong guess.")
     guess2 = input("What is your second guess for the song name?\n")
     
     if guess2 == song:
          print("Well done.")
          userscore = userscore + 1
          print("Your score is " + str(userscore) + ".")
     else:
          print("You have gotten both guesses wrong.")
          sys.exit()

Однако при обоих предположениях, с правильной песней, заглавными буквами, строчными буквами, заголовками с заглавными буквами и т. д., Программное обеспечение всегда считает ответ неправильным. Это связано с тем, как файл читается? Я не совсем уверен. Если бы кто-нибудь мог помочь мне с этим вопросом, это было бы очень признательно.

Файл Songs.txt содержит этот список:

Let It Happen
New Gold
Shotgun
Metamodernity
Bad Guy
Blank Space
Bohemian Rhapsody

Файл Artists.txt содержит этот список:

Tame Impala
Gorillaz
George Ezra
Vansire
Billie Eillish
Taylor Swift
Queen

Например, в викторине говорится:

Your prompt is: 
N
G
by Gorillaz

Enter your song name guess:
New Gold
Wrong guess.
What is your second guess for the song name?
NEW GOLD
You have gotten both guesses wrong.

Я ожидаю получить правильный ответ.

Строки песен по-прежнему заканчиваются новыми строками? то есть == song.strip()

Sayse 10.01.2023 13:14
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
0
1
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, у вас также может быть проблема с тем, как вы читаете файлы .txt.

Когда вы запускаете следующую строку: song = linecache.getline(r"Songs.txt", random_picker).upper()

Значение, присвоенное song, будет примерно таким 'LET IT HAPPEN\n'

Чтобы избежать этого, вы можете использовать метод .rstrip():

song = linecache.getline(r"Songs.txt", random_picker).upper().rstrip('\n')

Привет, трим, спасибо за ваш комментарий. Я реализовал этот метод чтения, и он отлично работает. Спасибо.

Boxo Games 11.01.2023 11:27

Другие вопросы по теме