Więc pracowałem nad skryptem do kursu, który robię i napotkałem błąd
Podstawową ideą programu jest system głosowania, ale podczas sprawdzania, kto otrzymał najwięcej głosów, program napotyka błąd, który odczytuje błąd
if votes[0] > votes[1] and votes[0] > votes[2] and votes[0] > votes[3]:
IndexError: list index out of range
Pełna funkcja jest tutaj:
def getwinner():
if votes[0] > votes[1] and votes[0] > votes[2] and votes[0] > votes[3]:
print("Congratulations candidate",cands[0],"You win")
if votes[1] > votes[0] and votes[1] > votes[2] and votes[1] > votes[3]:
print("Congratulations candidate", cands[1], "You win")
if votes[2] > votes[0] and votes[2] > votes[1] and votes[2] > votes[3]:
print("Congratulations candidate", cands[2], "You win")
if votes[3] > votes[0] and votes[3] > votes[1] and votes[3] > votes[2]:
print("Congratulations candidate", cands[3], "You win")
if votes[0] == votes[1] and votes[0] == votes[2] and votes[0] == votes[3]:
print("We have a tie")
if votes[1] == votes[0] and votes[1] == votes[2] and votes[1] == votes[3]:
print("We have a tie")
if votes[2] == votes[0] and votes[2] == votes[1] and votes[2] == votes[3]:
print("We have a tie")
if votes[3] == votes[0] and votes[3] == votes[1] and votes[3] == votes[2]:
print("We have a tie")
Głosy są zapisywane w tablicy o nazwie „głosy”, a nazwiska kandydatów są zapisywane w „cands”. Nazwiska kandydatów są wyrównane z głosami w tablicy „głosy”. Ale czy ktoś mógłby wyjaśnić tę kwestię, a także czy istnieje prostszy, mniej zawiły sposób rozwiązania tego problemu? Dzięki
2 odpowiedzi
Możesz znacznie uprościć swoją logikę i łatwo rozszerzyć ją na więcej niż 4 graczy:
max_vote = max(votes)
if votes.count(max_vote) > 1:
print("We have a tie")
else:
winner_index = votes.index(max_vote)
print("Congratulations candidate", cands[winner_index], "You win")
Wygląda na to, że Twoja lista votes
nie ma 4 wartości. Będzie narzekać, że nie ma nic w indeksie 3, jeśli nie ma nic w indeksie 3 i nie ma innego powodu.
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.
print(votes)
, są szanse, że czwarty indeksvotes[3]
nie istnieje. Komunikat o błędzie mówi po prostu, żevotes
nie ma czwartej pozycji (lub trzeciej). Twoje indeksowanie wykracza poza długość listy.print(len(votes))
, aby sprawdzić, czy Twoja lista zawiera cztery elementy. Jeśliprint(len(votes)) == 3
nie możesz uzyskać dostępu do czwartego elementu wvotes
.