Я пытаюсь найти способ сделать эту работу, он пытается подсчитать, сколько раз фраза появляется в построчном текстовом файле - PullRequest
0 голосов
/ 07 марта 2020

Каждый раз, когда я запускаю этот код, он говорит мне, что появляется ошибка, что мне нужно сделать, чтобы он сообщал мне, сколько раз команда появлялась в списке. Приведенный список: WorldSeriesWinners . побед = 0

try:
    input_file = open('WorldSeriesWinners.txt')
    team = input('Enter the team name: ')
    winner = input_file.readlines()
    for i in range(len(winner)):
        winner[i] = float(winner[i])
        if team in winner[i]:
            wins += 1
    print('The team ', team, ' won ', wins, ' World Series')

except IOError:
    print('The file could not be found.')
except IndexError:
    print('There was an indexing error.')
except:
    print('An error occurred.')

Ответы [ 3 ]

1 голос
/ 07 марта 2020

Не совсем отвечаю на то, что вы спрашиваете здесь, но я не мог не предложить более pythoni c способ реализации этого:

with open('WorldSeriesWinners.txt', 'r') as f:
    winners = [team.rstrip() for team in f.readlines()]

team = input('Enter the team name: ')

print(f'{team} won {winners.count(team)} world series')

Несколько быстрых объяснений:

  • f.readlines() - это список всех строк (хранится в виде строк). Однако они включают символ новой строки '\ n'. Метод .rstrip() избавляет от пробелов в начале или конце строки, включая новые строки.

  • [team.rstrip() for team in f.readlines()] - это то, что мы называем пониманием списка .

  • Метод count() подсчитывает число вхождения потенциального элемента; winners.count('New York Yankees') возвращает количество раз, когда янки появляются в списке.

  • Строка f'{team} won {winners.count(team)} world series' - это то, что мы называем f-string (реализовано в Python 3,6 и выше). Это чрезвычайно удобный эквивалент '{} won {} world series'.format(team, winners.count(team), так что имейте это в виду.

0 голосов
/ 07 марта 2020

до for winner in winners вместо for i in range(len(winner)):

0 голосов
/ 07 марта 2020

Итак ... вы не должны конвертировать имя победителя в float. Кроме того, вы не должны использовать in в случае, если пользователь передает один символ. Вот обновленный код:

wins = 0
input_file = open('WorldSeriesWinners.txt', 'r') # Specify to read file
team = input('Enter the team name: ')
winner = input_file.read().split("\n") # Removes "\n" on each line
for i in range(len(winner)):
    if winner[i] == team: # Check if inpout is equal instead of inside string
        wins += 1
print('The team', team, 'won', wins, 'World Series')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...