У вас есть ошибки отступов и бесконечный цикл.Вы, вероятно, также должны указать, что вы хотите python3
.Кроме того, установите обработчик исключений перед циклом, а не переустанавливайте его на каждой итерации.Используйте pylint
, чтобы получить ценные подсказки.
#!/usr/bin/env python3
'''
friendship program
'''
def main():
'''
a func
'''
friendships = {}
try:
while True:
name = input()
if name not in ['END', '']:
if name not in friendships:
friendships[name] = 1
else:
friendships[name] += 1
else:
break
except EOFError as ex:
print('ERROR ' + str(ex))
max_key = max(friendships, key=friendships.get)
print(max_key, friendships[max_key])
main()
Хотя вышеописанное не должно иметь проблем при обработке 50000 имен за 6 секунд, вы можете попробовать сделать то же самое на другом языке (если у вас нетиспользовать Python, который есть) и посмотреть, поможет ли это.Пример C ++:
#include <iostream>
#include <unordered_map>
#include <algorithm>
int main() {
std::unordered_map<std::string, unsigned long> friends;
std::string name;
while(std::cin >> name) {
if(name == "END" || name.size() == 0) break;
++friends[name];
}
auto max_it = std::max_element(
friends.begin(), friends.end(),
[](const auto& a, const auto& b) { return a.second < b.second; });
std::cout << max_it->first << " " << max_it->second << "\n";
}