Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2014 14:57:17

burrunduk
Зарегистрирован: 2014-11-25
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, задача про футбол

Напишите программу, которая принимает на стандартный вход список игр футбольных команд с результатом матча и выводит на стандартный вывод сводную таблицу результатов всех матчей.

За победу команды начисляется 3 очка, за поражение — 0, за ничью — 1.

Формат ввода следующий:
В первой строке указано целое число n — количество завершенных игр.
После этого идет n строк, в которых записаны результаты игры в следующем формате:
Первая_команда;Забито_первой_командой;Вторая_команда;Забито_второй_командой

Вывод программы необходимо оформить следующим образом:
Команда:Всего_игр Побед Ничьих Поражений Всего_очков

Конкретный пример ввода-вывода приведён ниже.

Порядок вывода команд произвольный.

Sample Input:

3
Зенит;3;Спартак;1
Спартак;1;ЦСКА;1
ЦСКА;0;Зенит;2

Sample Output:

Зенит:2 2 0 0 6
ЦСКА:2 0 1 1 1
Спартак:2 0 1 1 1

Офлайн

#2 Ноя. 27, 2014 18:52:13

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

python 3, задача про футбол

работу не проверял. но идея такая:

n = int(input('kolichestvo igr: '))
x_list = [input('kom1;gol1;kom2;gol2: ').split(';') for x in range(n)]
vs = [(x[0], x[2]) for x in x_list]
import itertools
clubs = set(itertools.chain.from_iterable(vs))
res = {club:[0, 0, 0, 0, 0] for club in clubs}
for kom1, gol1, kom2, gol2 in x_list:
    res[kom1][0] += 1
    res[kom2][0] += 1
    if int(gol1) > int(gol2):
        res[kom1][1] += 1
        res[kom1][4] += 3
        res[kom2][3] += 1
    elif int(gol1) < int(gol2):
        res[kom2][1] += 1
        res[kom2][4] += 3
        res[kom1][3] += 1
    elif int(gol1) == int(gol2):
        res[kom1][2] += 1
        res[kom1][4] += 1
        res[kom2][2] += 1
        res[kom2][4] += 1
for club clubs:
    print('{}:{}'.format(club, ' '.join(res[club])))

Офлайн

#3 Ноя. 27, 2014 19:45:09

Stroncy
Зарегистрирован: 2014-11-20
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, задача про футбол

botinag Вот такую ошибку выдаёт: http://i66.fastpic.ru/big/2014/1127/79/cf23d071686ba590cd2f46c8a78de879.jpg
если вставить in, то выдаёт по окончании ввода всех данных(перед выводом), такое:

Traceback (most recent call last):
File “D:\Download_S\1.py”, line 24, in <module>
print('{}:{}'.format(club, ‘ ’.join(res)))
TypeError: sequence item 0: expected str instance, int found

Отредактировано Stroncy (Ноя. 27, 2014 19:52:23)

Офлайн

#4 Ноя. 27, 2014 20:50:16

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

python 3, задача про футбол

n = int(input('kolichestvo igr: '))
x_list = [input('kom1;gol1;kom2;gol2: ').split(';') for x in range(n)]
vs = [(x[0], x[2]) for x in x_list]
import itertools
clubs = set(itertools.chain.from_iterable(vs))
res = {club:[0, 0, 0, 0, 0] for club in clubs}
for kom1, gol1, kom2, gol2 in x_list:
    res[kom1][0] += 1
    res[kom2][0] += 1
    if int(gol1) > int(gol2):
        res[kom1][1] += 1
        res[kom1][4] += 3
        res[kom2][3] += 1
    elif int(gol1) < int(gol2):
        res[kom2][1] += 1
        res[kom2][4] += 3
        res[kom1][3] += 1
    elif int(gol1) == int(gol2):
        res[kom1][2] += 1
        res[kom1][4] += 1
        res[kom2][2] += 1
        res[kom2][4] += 1
for club in clubs:
    print('{}:{}'.format(club, ' '.join(map(str, res[club]))))

Офлайн

#5 Ноя. 27, 2014 20:58:20

Stroncy
Зарегистрирован: 2014-11-20
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, задача про футбол

botinag, БОЛЬШОЕ СПАСИБО!!! …уже в какой раз ))
..всё получилось.

Отредактировано Stroncy (Ноя. 27, 2014 20:58:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version