Ich arbeite an einer relativ neuen Herausforderung in CodeEval namens "Football". Die Beschreibung wird in dem folgenden Link aufgeführt: https://www.codeeval.com/open_challenges/230/Codeval Challenge 230: Fußball, Antwort nur teilweise korrekt
Eingänge sind Zeilen einer Datei von Python zu lesen, und innerhalb jeder Zeile gibt es Listen, getrennt durch ‚|‘, wobei jede Liste repräsentiert ein Land: das erste sein Land " 1 ", zweites Land" 2 "und so weiter.
1 2 3 4 | 3 1 | 4 1
19 11 | 19 21 23 | 31 39 29
Die Ausgänge sind auch Zeilen als Reaktion auf jede aus der Datei gelesene Zeile.
1: 1,2,3; 2: 1; 3: 1,2; 4: 1,3;
11: 1; 19: 1,2; 21: 2; 23: 2; 29: 3; 31: 3; 39: 3;
so unterstützt Land 1 Team 1, 2 und 3 wie in der ersten Zeile der Ausgabe: 1:1,2,3
.
Unten ist meine Lösung, und da ich keine Ahnung habe, warum die Lösung nur für die beiden im Beschreibungslink aufgelisteten Beispielfälle funktioniert, möchte ich jeden um Kommentare und Hinweise bitten, wie ich meinen Code korrigieren kann. Vielen Dank für Ihre Zeit und Unterstützung im Voraus.
import sys
def football(string):
countries = map(str.split, string.split('|'))
teams = sorted(list(set([i[j] for i in countries for j in range(len(i))])))
results = []
for i in range(len(teams)):
results.append([teams[i]+':'])
for j in range(len(countries)):
if teams[i] in countries[j]:
results[i].append(str(j+1))
for i in range(len(results)):
results[i] = results[i][0]+','.join(results[i][1:])
return '; '.join(results) + '; '
if __name__ == '__main__':
lines = [line.rstrip() for line in open(sys.argv[1])]
for line in lines:
print football(line)
Hallo Blckknght, danke für deine Lösung. Es ist in der Tat eine bessere als meine, da der Prozess einfacher ist. Ich habe auch über neue Dinge gelernt, wie Sie die 'enumerate' aufrufen können, um nicht bei 0 zu starten, und Sie können' setdefault' verwenden. Also was 'team_supporters.setdefault (team, []). Append (nation)' tut, ist, wenn ich richtig verstehe: es sucht nach 'key' mit dem Wert' team' um die 'nation' hinzuzufügen, aber wenn die 'team' Taste ist noch nicht im Wörterbuch, dann' setdefault' fügt eine leere Liste [] mit 'key' als die vorher nicht existierende neue' team' hinzu? Danke noch einmal! – Nahua
Habe gerade mit setdefault ein bisschen gespielt und es bestätigt. Danke nochmal für die tollen Tipps! – Nahua