Программа не может вернуться с ошибкойPython

Программы на Python
Ответить
Anonymous
 Программа не может вернуться с ошибкой

Сообщение Anonymous »

У меня есть код, который использует 3 разных класса, которые я создал, чтобы упростить предоставление информации, он должен работать, но он не работает и продолжает возвращаться с ошибкой 17,838, и что бы я ни делал, он отказывается читать из моего файла правильно

Код: Выделить всё

import csv

class MP:
def __init__(self, first_name, last_name, party, votes_received):
self.name = f"{first_name} {last_name}"
self.party = party
self.votes_received = int(votes_received)

def __str__(self):
return f"{self.name} ({self.party}): {self.votes_received} votes"

class Party:
def __init__(self, name):
self.name = name
self.total_votes = 0
self.mps_elected = 0

def add_votes(self, votes):
self.total_votes += votes

def add_mp(self):
self.mps_elected += 1

def __str__(self):
return f"{self.name}: {self.total_votes} votes, {self.mps_elected} MPs"

class Constituency:
def __init__(self, name, region, electorate, valid_votes):
self.name = name
self.region = region
self.electorate = int(electorate.replace(",", ""))
self.valid_votes = int(valid_votes.replace(",", ""))
self.candidates = []

def add_candidate(self, mp):
self.candidates.append(mp)

def party_percent(self, party_name):
party_votes = sum(mp.votes_received for mp in self.candidates if mp.party == party_name)
return (party_votes / self.valid_votes) * 100 if self.valid_votes > 0 else 0

def __str__(self):
return f"{self.name} ({self.region}): {self.valid_votes}/{self.electorate} valid votes cast"

def load_data(file_path):
parties = {}
constituencies = {}

with open("EditedData.csv", 'r') as file:
reader = csv.DictReader(file)
for row in reader:
# Constituency data
const_name = row["Constituency name"]
region_name = row["Region name"]
electorate = row["Electorate"]
valid_votes = row["Valid votes"]

# Create Constituency object if not already created
if const_name not in constituencies:
constituencies[const_name] = Constituency(const_name, region_name, electorate, valid_votes)

# Candidate data
first_name = row["Member first name"]
last_name = row["Member surname"]
first_party = row["First party"]
votes_received = int(row[first_party]) if first_party in row else 0

# Create MP object
mp = MP(first_name, last_name, first_party, votes_received)
constituencies[const_name].add_candidate(mp)

# Handle Party data
if first_party not in parties:
parties[first_party] = Party(first_party)
parties[first_party].add_votes(votes_received)

# Check if this MP is the winner and increment MP count for their party
if row["Result"].endswith("hold") or row["Result"].endswith("gain"):
parties[first_party].add_mp()

return parties, constituencies

def main():
file_path = "EditedData.csv"
parties, constituencies = load_data(file_path)

# Display Constituency Details
print("\n=== Constituency Details ===")
for constituency in constituencies.values():
print(constituency)
print("Candidates:")
for candidate in constituency.candidates:
print(candidate)

# Display Party Statistics
print("\n=== Party Statistics ===")
for party in parties.values():
print(party)

# Display Party Percentages per Constituency
print("\n=== Party Percentages in Each Constituency ===")
for constituency in constituencies.values():
print(f"\n{constituency.name}:")
for party_name in parties:
percent = constituency.party_percent(party_name)
print(f"  {party_name}: {percent:.2f}%")

if __name__ == "__main__":
main()
Я ожидал, что он будет использовать созданные мной классы, чтобы прочитать файл и вернуть соответствующую информацию

Подробнее здесь: https://stackoverflow.com/questions/792 ... h-an-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»