Самый частый исход матча

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
В общем в двух словах хочу потренироваться в статистике и программировании, за основу взял футбол, немогу понять как найти самый частый исход матча в моём коде через два списка, беру 100 личных встреч, в список а записываю кол-во голов первой команды, в список b записываю кол-во голов второй, пример кода:
a = []
b = []
srednee = 0
sred1 = 0
sred2 = 0
draw = 0
win1 = 0
win2 = 0
for i in range(100):
a.append(input())
b.append(input())
srednee += int(a)+int(b)
sred1 += int(a)
sred2 += int(b)
if a==b:
draw += 1
elif int(a)>int(b):
win1 += 1
else:
win2 += 1
print("среднее количество забитых мячей в матче = ", srednee/100)
print("среднее количество забитых голов первой команды = ", sred1/100)
print("среднее количество забитых голов второй команды = ", sred2/100)
print("процент ничьих = ", draw)
print("процент побед 1 команды = ", win1)
print("процент побед 2 команды = ", win2)
 

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
не работает) если вводим в первый список [1, 1, 1, 3, 3] второй [5, 4, 3, 1, 1] самый частый счёт будет 3:1, а выводит 1:1, ваш код находит самый частый исход по голам для каждой команды отдельно, а надо самый частый исход общий, матча, в этом и сложность) может можно через словарь заводить исходы матча, а потом найти самый частый элемент-ключ в словаре, если такая функция имеется
Python:
from collections import Counter

a = []
b = []
c = []
print('a')
for i in range(10):
    a.append(int(input()))

print('b')
for i in range(10):
    b.append(int(input()))
for i in range(10):
    if (a[i], b[i]) in c:
        c.append((a[i], b[i]))
    else:
        c.append((b[i], a[i]))

frequent_outcome = Counter(c).most_common(1)

print('самый частый исход =', frequent_outcome[0][0])
проверь сейчас
 
  • Мне нравится
Реакции: qzpxg

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
пушка, а можно вывести количество таких исходов? то есть самый частый исход(3:1, 5 раз), и если не составит труда всё интегрировать в мой код, а то я не осилю, буду премного благодарен
да, можно

Python:
from collections import Counter

a = []
b = []
c = []
print('a')
for i in range(10):
    a.append(int(input()))

print('b')
for i in range(10):
    b.append(int(input()))
for i in range(10):
    if (a[i], b[i]) in c:
        c.append((a[i], b[i]))
    else:
        c.append((b[i], a[i]))

frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
print('самый частый исход = ','(', x, ':', y, ',', frequent_outcome[0][1], ' раз(а)',')', sep='')
 
Последнее редактирование:
  • Мне нравится
Реакции: qzpxg

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
Python:
command_name = input('Введіть назви команд:').split()

rez = input('Введіть данні:').split()

game = dict.fromkeys(command_name, 0)

win_of_team = dict.fromkeys(command_name, 0)

commands_score = dict.fromkeys(command_name, 0)

lose_of_team = dict.fromkeys(command_name, 0)

draw_of_team = dict.fromkeys(command_name, 0)

balls_goal = dict.fromkeys(command_name, 0)

balls_lose = dict.fromkeys(command_name, 0)



x = 2

while x < len(rez):

    first_team_score, first_index = rez[x], x

    x += 1

    second_team_score, second_index = rez[x], x

    x += 3

    balls_goal[rez[first_index - 2]] += int(first_team_score)

    balls_goal[rez[first_index - 1]] += int(second_team_score)

    balls_lose[rez[first_index - 2]] += int(second_team_score)

    balls_lose[rez[first_index - 1]] += int(first_team_score)

    game[rez[first_index - 2]] += 1

    game[rez[first_index - 1]] += 1



    if first_team_score > second_team_score:

        commands_score[rez[first_index - 2]] += 3

        win_of_team[rez[first_index - 2]] += 1

        win_of_team[rez[first_index - 1]] += 1

    elif first_team_score < second_team_score:

        commands_score[rez[first_index - 1]] += 3

        win_of_team[rez[first_index - 1]] += 1

        lose_of_team[rez[first_index - 2]] += 1

    else:

        commands_score[rez[first_index - 1]] += 1

        commands_score[rez[first_index - 2]] += 1

        draw_of_team[rez[first_index - 1]] += 1

        draw_of_team[rez[first_index - 2]] += 1



number = 1

for i in sorted(commands_score.items(), key=lambda para: para[1], reverse=True):

    print(number, 'місце -', i[0], ',із рахунком:', i[1], ',зігравши -', game[i[0]], 'ігор, вигравши',

          win_of_team[i[0]], 'ігор, програвши', lose_of_team[i[0]], 'ігор, зігравши в нічию', draw_of_team[i[0]],

          'раз, забивши', balls_goal[i[0]], "м'ячів, та пропустивши", balls_lose[i[0]], "м'ячів")



    number += 1
1624875468788.png
вот такой примерный ввод вывод кода, когда то когда учился сделал программу, может тебе поможет
если что задавай вопросы
 

Вложения

  • Словники_1.zip
    811 байт · Просмотры: 0
Последнее редактирование:

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
вот ваш код который уже работает, так же задавайте вопросы, так как я ничего не коментил





Python:
a = []

b = []

srednee = 0

sred1 = 0

sred2 = 0

draw = 0

win1 = 0

win2 = 0

for i in range(100):

    a.append(int(input()))

    b.append(int(input()))

    srednee += a[len(a) - 1] + b[len(b) - 1]

    sred1 += a[len(a) - 1]

    sred2 += b[len(b) - 1]

    if a[len(a) - 1] == b[len(b) - 1]:

        draw += 1

    elif a[len(a) - 1] > b[len(b) - 1]:

        win1 += 1

    else:

        win2 += 1

print("среднее количество забитых мячей в матче = ", srednee / 100)

print("среднее количество забитых голов первой команды = ", sred1 / 100)

print("среднее количество забитых голов второй команды = ", sred2 / 100)

print("процент ничьих = ", draw)

print("процент побед 1 команды = ", win1)

print("процент побед 2 команды = ", win2)
 

Вложения

  • помощь.zip
    477 байт · Просмотры: 0
Последнее редактирование:

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
Python:
command_name = input('Введіть назви команд:').split()

rez = input('Введіть данні:').split()

game = dict.fromkeys(command_name, 0)

win_of_team = dict.fromkeys(command_name, 0)

commands_score = dict.fromkeys(command_name, 0)

lose_of_team = dict.fromkeys(command_name, 0)

draw_of_team = dict.fromkeys(command_name, 0)

balls_goal = dict.fromkeys(command_name, 0)

balls_lose = dict.fromkeys(command_name, 0)



x = 2

while x < len(rez):

    first_team_score, first_index = rez[x], x

    x += 1

    second_team_score, second_index = rez[x], x

    x += 3

    balls_goal[rez[first_index - 2]] += int(first_team_score)

    balls_goal[rez[first_index - 1]] += int(second_team_score)

    balls_lose[rez[first_index - 2]] += int(second_team_score)

    balls_lose[rez[first_index - 1]] += int(first_team_score)

    game[rez[first_index - 2]] += 1

    game[rez[first_index - 1]] += 1



    if first_team_score > second_team_score:

        commands_score[rez[first_index - 2]] += 3

        win_of_team[rez[first_index - 2]] += 1

        win_of_team[rez[first_index - 1]] += 1

    elif first_team_score < second_team_score:

        commands_score[rez[first_index - 1]] += 3

        win_of_team[rez[first_index - 1]] += 1

        lose_of_team[rez[first_index - 2]] += 1

    else:

        commands_score[rez[first_index - 1]] += 1

        commands_score[rez[first_index - 2]] += 1

        draw_of_team[rez[first_index - 1]] += 1

        draw_of_team[rez[first_index - 2]] += 1



number = 1

for i in sorted(commands_score.items(), key=lambda para: para[1], reverse=True):

    print(number, 'місце -', i[0], ',із рахунком:', i[1], ',зігравши -', game[i[0]], 'ігор, вигравши',

          win_of_team[i[0]], 'ігор, програвши', lose_of_team[i[0]], 'ігор, зігравши в нічию', draw_of_team[i[0]],

          'раз, забивши', balls_goal[i[0]], "м'ячів, та пропустивши", balls_lose[i[0]], "м'ячів")



    number += 1
Посмотреть вложение 1239
вот такой примерный ввод вывод кода, когда то когда учился сделал программу, может тебе поможет
если что задавай вопросы
не то, должен выводить самый частый счёт между командами из выборки 100 игр
 

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
не то, должен выводить самый частый счёт между командами из выборки 100 игр
я сначала не понял суть вопроса ,возможно это подойдет?
Python:
from collections import Counter
a = []
b = []

print('a')
for i in range(100):
    a.append(int(input()))
    
print('b')
for i in range(100):
    b.append(int(input()))

frequent_outcome = Counter(a).most_common(1)
frequent_outcome1 = Counter(b).most_common(1)

print('самый частый исход =', frequent_outcome[0][0], ':', frequent_outcome1[0][0])
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
я сначала не понял суть вопроса ,возможно это подойдет?
Python:
from collections import Counter
a = []
b = []

print('a')
for i in range(100):
    a.append(int(input()))

print('b')
for i in range(100):
    b.append(int(input()))

frequent_outcome = Counter(a).most_common(1)
frequent_outcome1 = Counter(b).most_common(1)

print('самый частый исход =', frequent_outcome[0][0], ':', frequent_outcome1[0][0])
не работает) если вводим в первый список [1, 1, 1, 3, 3] второй [5, 4, 3, 1, 1] самый частый счёт будет 3:1, а выводит 1:1, ваш код находит самый частый исход по голам для каждой команды отдельно, а надо самый частый исход общий, матча, в этом и сложность) может можно через словарь заводить исходы матча, а потом найти самый частый элемент-ключ в словаре, если такая функция имеется
 
Последнее редактирование:

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
Python:
from collections import Counter

a = []
b = []
c = []
print('a')
for i in range(10):
    a.append(int(input()))

print('b')
for i in range(10):
    b.append(int(input()))
for i in range(10):
    if (a[i], b[i]) in c:
        c.append((a[i], b[i]))
    else:
        c.append((b[i], a[i]))

frequent_outcome = Counter(c).most_common(1)

print('самый частый исход =', frequent_outcome[0][0])
проверь сейчас
пушка, а можно вывести количество таких исходов? то есть самый частый исход(3:1, 5 раз), и если не составит труда всё интегрировать в мой код, а то я не осилю, буду премного благодарен
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
да, можно

Python:
from collections import Counter

a = []
b = []
c = []
print('a')
for i in range(10):
    a.append(int(input()))

print('b')
for i in range(10):
    b.append(int(input()))
for i in range(10):
    if (a[i], b[i]) in c:
        c.append((a[i], b[i]))
    else:
        c.append((b[i], a[i]))

frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
print('самый частый исход = ','(', x, ':', y, ',', frequent_outcome[0][1], ' раз(а)',')', sep='')
СПС, а всё вместе с предыдущим работающим кодом, чтобы всё подряд выводило?
 

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
СПС, а всё вместе с предыдущим работающим кодом, чтобы всё подряд выводило?
советую посмотреть тему словари и модуль collections,
я как напишу код, напишу
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
советую посмотреть тему словари и модуль collections,
я как напишу код, напишу
не дошёл просто ещё) сейчас учу ошибки и исключения, модуль sys и тд
 

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
советую узнать как читать данные с файла что бы удобней все эти 100 матчей перебирать,
потом не удачное использование input() как для меня
я бы делал
Python:
a, b, = map(int, input())
# ввод
1 4
4 6
3 6

Python:
from collections import Counter

a = []
b = []
c = []
srednee = 0
sred1 = 0
sred2 = 0
draw = 0
win1 = 0
win2 = 0

for i in range(5):
    a.append(int(input()))
    b.append(int(input()))
    srednee += a[len(a) - 1] + b[len(b) - 1]
    sred1 += a[len(a) - 1]
    sred2 += b[len(b) - 1]
for i in range(5):
    if a[i-1] == b[i-1]:
        draw += 1
    elif a[i-1] > b[i-1]:
        win1 += 1
    else:
        win2 += 1
print("среднее количество забитых мячей в матче = ", srednee / 5)
print("среднее количество забитых голов первой команды = ", sred1 / 5)
print("среднее количество забитых голов второй команды = ", sred2 / 5)
print("процент ничьих = ", draw)
print("процент побед 1 команды = ", win1)
print("процент побед 2 команды = ", win2)
for i in range(5):
    if (a[i], b[i]) in c:
        c.append((a[i], b[i]))
    else:
        c.append((b[i], a[i]))

frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
print('самый частый исход = ', '(', x, ':', y, ',', frequent_outcome[0][1], ' раз(а)', ')', sep='')
 

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
не дошёл просто ещё) сейчас учу ошибки и исключения, модуль sys и тд
можно было и без этого модуля (collections) если что , просто нужно посидеть подумать
но я думаю это легче способ
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
советую узнать как читать данные с файла что бы удобней все эти 100 матчей перебирать,
потом не удачное использование input() как для меня
я бы делал
Python:
a, b, = map(int, input())
# ввод
1 4
4 6
3 6

Python:
from collections import Counter

a = []
b = []
c = []
srednee = 0
sred1 = 0
sred2 = 0
draw = 0
win1 = 0
win2 = 0

for i in range(5):
    a.append(int(input()))
    b.append(int(input()))
    srednee += a[len(a) - 1] + b[len(b) - 1]
    sred1 += a[len(a) - 1]
    sred2 += b[len(b) - 1]
for i in range(5):
    if a[i-1] == b[i-1]:
        draw += 1
    elif a[i-1] > b[i-1]:
        win1 += 1
    else:
        win2 += 1
print("среднее количество забитых мячей в матче = ", srednee / 5)
print("среднее количество забитых голов первой команды = ", sred1 / 5)
print("среднее количество забитых голов второй команды = ", sred2 / 5)
print("процент ничьих = ", draw)
print("процент побед 1 команды = ", win1)
print("процент побед 2 команды = ", win2)
for i in range(5):
    if (a[i], b[i]) in c:
        c.append((a[i], b[i]))
    else:
        c.append((b[i], a[i]))

frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
print('самый частый исход = ', '(', x, ':', y, ',', frequent_outcome[0][1], ' раз(а)', ')', sep='')
я вручную вводить буду, так как данные спарсить не получится, потом если что то получится интересное отпишусь в личку, это прога для одной идеи, спасибо большое за помощь в реализации
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
можно было и без этого модуля (collections) если что , просто нужно посидеть подумать
но я думаю это легче способ
можно было добавлять строку в список ['3:0'] и потом через счётчик и цикл в цикле сравнить все элементы
 

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
я вручную вводить буду, так как данные спарсить не получится, потом если что то получится интересное отпишусь в личку, это прога для одной идеи, спасибо большое за помощь в реализации
Окей,удачи в задумке
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
Окей,удачи в задумке
только что пользовался прогой, самый частый исход всё таки неправильно выдаёт, он считает что 2:1 и 1:2 это одно и тоже, например если из 100 исходов было 10(1:2) и 5 (2:1) он выдаст самый частый исход 1:2 (15 раз), спасай)
 
Последнее редактирование:

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
только что пользовался прогой, самый частый исход всё таки неправильно выдаёт, он считает что 2:1 и 1:2 это одно и тоже, например если из 100 исходов было 10(1:2) и 5 (2:1) он выдаст самый частый исход 1:2 (15 раз), спасай)
Я учел это думая что это одинаковый исход , там пару строк нужно стереть

Python:
from collections import Counter

a = []
b = []
c = []
srednee = 0
sred1 = 0
sred2 = 0
draw = 0
win1 = 0
win2 = 0

for i in range(5):
    a.append(int(input()))
    b.append(int(input()))
    c.append((a[i], b[i]))
    srednee += a[len(a) - 1] + b[len(b) - 1]
    sred1 += a[len(a) - 1]
    sred2 += b[len(b) - 1]

for i in range(5):
    if a[i - 1] == b[i - 1]:
        draw += 1
    elif a[i - 1] > b[i - 1]:
        win1 += 1
    else:
        win2 += 1
print("среднее количество забитых мячей в матче = ", srednee / 5)
print("среднее количество забитых голов первой команды = ", sred1 / 5)
print("среднее количество забитых голов второй команды = ", sred2 / 5)
print("процент ничьих = ", draw)
print("процент побед 1 команды = ", win1)
print("процент побед 2 команды = ", win2)

frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
print('самый частый исход = ', '(', x, ':', y, ',', frequent_outcome[0][1], ' раз(а)', ')', sep='')

заметил что на строках

Python:
frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
я не просчитал если будет несколько команд с найбольшим счетом, попробуй сам доделать
подсказка:
Counter(c).most_common() словарь который хранит ключ значение, первый[ ]отвечает от 0 счета до последнего а второй от 0 до 1 0 это счет 1 это количество таких игр
 
Последнее редактирование:

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
Н
Я учел это думая что это одинаковый исход , там пару строк нужно стереть

Python:
from collections import Counter

a = []
b = []
c = []
srednee = 0
sred1 = 0
sred2 = 0
draw = 0
win1 = 0
win2 = 0

for i in range(5):
    a.append(int(input()))
    b.append(int(input()))
    c.append((a[i], b[i]))
    srednee += a[len(a) - 1] + b[len(b) - 1]
    sred1 += a[len(a) - 1]
    sred2 += b[len(b) - 1]

for i in range(5):
    if a[i - 1] == b[i - 1]:
        draw += 1
    elif a[i - 1] > b[i - 1]:
        win1 += 1
    else:
        win2 += 1
print("среднее количество забитых мячей в матче = ", srednee / 5)
print("среднее количество забитых голов первой команды = ", sred1 / 5)
print("среднее количество забитых голов второй команды = ", sred2 / 5)
print("процент ничьих = ", draw)
print("процент побед 1 команды = ", win1)
print("процент побед 2 команды = ", win2)

frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
print('самый частый исход = ', '(', x, ':', y, ',', frequent_outcome[0][1], ' раз(а)', ')', sep='')

заметил что на строках

Python:
frequent_outcome = Counter(c).most_common(1)
x, y = frequent_outcome[0][0]
я не просчитал если будет несколько команд с найбольшим счетом, попробуй сам доделать
подсказка:
Counter(c).most_common() словарь который хранит ключ значение, первый[ ]отвечает от 0 счета до последнего а второй от 0 до 1 0 это счет 1 это количество таких игр
Не понял(
 

Ayras

Новичок
Пользователь
Июн 26, 2021
23
2
3
Не понял в чем проблема или не понял как это сделать ?
 

Форум IT Специалистов