Pranav Sharma Ответов: 4

Нужны идеи, чтобы решить эту проблему, пожалуйста, помогите мне, я пробовал только для одной строки ввода


Вот некоторые основные факты о подсчете очков в теннисе: теннисный матч состоит из сетов. Набор состоит из игр.

Чтобы выиграть сет, игрок должен выиграть 6 игр с разницей в 2 игры. В 6-6 часто есть специальный тай-брейк. В некоторых случаях игроки продолжают играть до тех пор, пока один из них не выиграет сет с разницей в две партии.

Теннисные матчи могут быть как 3 сета, так и 5 сетов. Игрок, выигравший большинство сетов, выигрывает матч (то есть 2 из 3 сетов или 3 из 5 сетов) Счет матча перечисляет игры в каждом сете, причем общий счет победителя сообщается первым для каждого сета. Таким образом, если счет 6-3, 5-7, 7-6, то это означает, что первый игрок выиграл первый сет 6 геймов к 3, проиграл второй 5 геймов к 7 и выиграл третий 7 геймов к 6 (и, следовательно, выиграл общий матч также 2 сета к 1).

Вы будете читать ввод с клавиатуры (стандартный ввод), содержащий результаты нескольких теннисных матчей. Счет каждого матча записывается в отдельную строку следующего формата:

Победитель:неудачник:набор-1 балл,...,набор-к-Результат, где 2 ≤ к ≤ 5

Например, входная строка формы
Halep:Wozniacki:3-6,6-3,6-3

указывает на то, что Халеп обыграла Возняцки 3-6, 6-3, 6-3 в лучшем из 3-х сетов матче.

Ввод заканчивается пустой строкой.

Вы должны написать программу на Python, которая считывает информацию обо всех матчах и составляет следующую статистику для каждого игрока:

Количество выигранных матчей с лучшим из 5 сетов
Количество выигранных матчей с лучшим из 3-х сетов
Количество выигранных сетов
Количество выигранных игр
Количество потерянных наборов
Количество проигранных игр
Вы должны распечатать на экран (стандартный вывод) сводку в порядке убывания ранжирования, где ранжирование происходит в соответствии с критериями 1-6 в этом порядке (сравните пункт 1, Если равно сравните пункт 2, Если равно сравните пункт 3 и т.д., отметив, что для пунктов 5 и 6 сравнение обратное).

Например, учитывая следующие данные
Federer:Nadal:2-6,6-7,7-6,6-3,6-1
Nadal:Federer:6-3,4-6,6-4,6-3
Federer:Nadal:6-0,7-6,6-7,6-3
Nadal:Federer:6-4,6-4
Federer:Nadal:2-6,6-2,6-0
Nadal:Federer:6-3,4-6,6-3,6-4
Federer:Nadal:7-6,4-6,7-6,2-6,6-2
Nadal:Federer:7-5,7-5
Halep:Wozniacki:3-6,6-3,6-3


ваша программа должна распечатать следующее
Federer 3 1 13 142 16 143
Nadal 2 2 16 143 13 142
Halep 0 1 2 15 1 12
Wozniacki 0 0 1 12 2 15


Что я уже пробовал:

players={}
contents=[]
while (True):
    s=input()
    if len(s)==0:
        break
    s=s.split(':')
    scores=s[2].split(',')
    if s[0] not in players:
        players[s[0]]=[]
        for i in range(0,6):
            players[s[0]].append(0)
    if s[1] not in players:
        players[s[1]]=[]
        for i in range(0,6):
            players[s[1]].append(0)
    if len(scores)>3:
        players[s[0]][0]+=1
    else:
        players[s[0]][1]+=1
    for gset in scores:
        if gset[0]>gset[2]:
            players[s[0]][2]+=1
            players[s[1]][4]+=1
        if gset[0]<gset[2]:
            players[s[0]][4]+=1
            players[s[1]][2]+=1
        players[s[0]][3]+=int(gset[0])
        players[s[1]][3]+=int(gset[2])
        players[s[0]][5]+=int(gset[2])
        players[s[1]][5]+=int(gset[0])

как Сортировать по заданной задаче плз подскажите

4 Ответов

Рейтинг:
1

Member 14574725

игроки=отсортированный(игроки.пользования(),ключ=лямбда-Т:Т[1],обратный=истина)
для элемента в игроках:
печать(элемент[0],элемент[1][0],элемент[1][1],элемент[1][2],Элемент[1][3],элемент[1][4],элемент[1][5])

#используйте приведенный выше код для сортировки результата


Рейтинг:
0

Richard MacCutchan

Видеть 5. структуры данных — документация Python 3.7.4[^] для встроенных классов коллекций, которые должны вам помочь.


Рейтинг:
0

Member 14577447

например , значение в игроках.():
печать(ключ , *значение)


Рейтинг:
0

Member 14577572

с=[]
#для ввода строк в список до тех пор, пока не будет введен null
пока это правда:
б = вход()
если b==":
перерыв
С. добавление(б)
#создание уникального списка игроков
НЛ=[]
для i в диапазоне(len(s)):
НЛ.добавить(с[я].сплит(':'))
имена=набор()
для i в диапазоне(len(nl)):
имена.добавить(nl[i][0])
имена.добавить(nl[i][1])
игроки=[]
ибо я в именах:
игроков.добавить(я)
#составление списка матчей и списка очков в нем
scorelist=[]
для i в диапазоне(len(s)):
scorelist.добавить(с[я].сплит(','))
м=[]
для i в диапазоне(len(scorelist)):
м. добавить([])
для j в диапазоне(len(scorelist[i])):
м[я].добавить([])
м[я][Дж].добавить(тип int(scorelist[я][Дж][-3]))
м[я][Дж].добавить(тип int(scorelist[я][Дж][-1]))
икс=[];
для п игроков:
gw=0;gl=0;sw=0;sl=0;w3=0;w5=0
для i в диапазоне(len(nl)):
swt=0
если p в nl[i]:
если p==nl[i][0]:
для j в диапазоне(len(m[i])):
gw=gw+m[i][j][0]
gl=gl+m[i][j][1]
если m[i][j][0]> m[i][j][1]:
sw=sw+1
swt=swt+1
еще:
sl=sl+1
если len(m[i]) < 3 и swt == 2:
w3 = w3 + 1
elif len(m[i]) > 3 и swt == 3:
w5 = w5 + 1
Элиф лен(m[i]) == 3:
если swt == 3:
w5 = w5 + 1
Элиф свт == 2:
w3 = w3 + 1
если p==nl[i][1]:
для j в диапазоне(len(m[i])):
gw=gw+m[i][j][1]
gl=gl+m[i][j][0]
если m[i][j][0]< m[i][j][1]:
sw=sw+1
swt=swt+1
еще:
sl=sl+1
если len(m[i]) < 3 и swt == 2:
w3 = w3 + 1
elif len(m[i]) > 3 и swt == 3:
w5 = w5 + 1
Элиф лен(m[i]) == 3:
если swt == 3:
w5 = w5 + 1
Элиф свт == 2:
w3 = w3 + 1
х.присоединить([с,В5,В3,ув,гв,сл,гл])
def s2(a):
возврат a[2]
def s3(a):
возвращение[3]
w50=[];w51=[];w52=[];w53=[];w5230=[];w5232=[];w5331=[];w5332=[]
для i в диапазоне(len(x)):
если x[i][1]==0:
w50.присоединить(х, [я])
для i в диапазоне(len(x)):
если x[i][1] == 1:
в51.присоединить(х, [я])
для i в диапазоне(len(x)):
если x[i][1] == 2:
w52.присоединить(х, [я])
для i в диапазоне(len(x)):
если x[i][1] == 3:
w53.присоединить(х, [я])
w50.сортировка(ключ=s2)
для i в диапазоне(len(w52)):
если w52[i][2]==0:
w5230.append(w52[i])
для i в диапазоне(len(w52)):
если w52[i][2]==2:
w5232.append(w52[i])
w5230.sort(ключ=s3)
для i в диапазоне(len(w53)):
если w53[i][2]==1:
w5331.append(w53[i])
для i в диапазоне(len(w53)):
если w53[i][2]==2:
w5332.append(w53[i])
w5331.sort(ключ=s3)
w5332.sort(ключ=s3)
z=w50+w51+w5230+w5232+w5331+w5332
з.обратный()
для i в диапазоне(len(z)):
для j в диапазоне(0,6):
print(str(z[i][j]),end=' ')
print(str(z[i][6]),end=")
печатать()