У меня есть код, который использует 3 разных класса, которые я создал, чтобы упростить предоставление информации, он должен работать, но он не работает и продолжает возвращаться с ошибкой ValueError: неверный литерал для int() с базой 10
it отказывается читать файл, который у меня есть правильно
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()
я ожидал, что он будет использовать созданные мной классы для чтения файла и возврата соответствующей информации
файл отформатирован вот так, и я мне не разрешено его менять
Constituency name, Region name,Country name,Constituency type,Member first name,Member surname,Member gender,Result,First party,Second party,Electorate,Valid votes,Invalid votes,Majority,Con,Lab,LD,RUK,Green,SNP,PC,DUP,SF,SDLP,UUP,APNI,All other candidates,Of which other winner
Aberafan Maesteg,Wales,Wales,County,Stephen,Kinnock,Male,Lab hold,Lab,RUK,"72,580","35,755",79,"10,354","2,903","17,838",916,"7,484","1,094",0,"4,719",0,0,0,0,0,801,0
Aberdeen North,Scotland,Scotland,Burgh,Kirsty,Blackman,Female,SNP hold,SNP,Lab,"75,925","42,095",115,"1,760","5,881","12,773","2,583","3,781","1,275","14,533",0,0,0,0,0,0,"1,269",0
Aberdeen South,Scotland,Scotland,Burgh,Stephen,Flynn,Male,SNP hold,SNP,Lab,"77,328","46,345",178,"3,758","11,300","11,455","2,921","3,199","1,609","15,213",0,0,0,0,0,0,648,0
Aberdeenshire North and Moray East,Scotland,Scotland,County,Seamus,Logan,Male,SNP gain from Con,SNP,Con,"70,058","38,188",170,942,"12,513","3,876","2,782","5,562",0,"13,455",0,0,0,0,0,0,0,0
Airdrie and Shotts,Scotland,Scotland,County,Kenneth,Stevenson,Male,Lab gain from SNP,Lab,SNP,"70,199","36,666",95,"7,547","1,696","18,871",725,"2,971",0,"11,324",0,0,0,0,0,0,"1,079",0
Aldershot,South East,England,Borough,Alex,Baker,Female,Lab gain from Con,Lab,Con,"78,553","48,544",179,"5,683","14,081","19,764","4,052","8,210","2,155",0,0,0,0,0,0,0,282,0
Aldridge-Brownhills,West Midlands,England,Borough,Wendy,Morton,Female,Con hold,Con,Lab,"70,268","40,912",156,"4,294","15,901","11,607","1,755","9,903","1,746",0,0,0,0,0,0,0,0,0
Alloa and Grangemouth,Scotland,Scotland,County,Brian,Leishman,Male,Lab gain from SNP,Lab,SNP,"70,680","41,201",74,"6,122","3,127","18,039","1,151","3,804","1,421","11,917",0,0,0,0,0,0,"1,742",0
Altrincham and Sale West,North West,England,Borough,Connor,Rand,Male,Lab gain from Con,Lab,Con,"74,025","51,452",184,"4,174","16,624","20,798","4,727","4,961","3,699",0,0,0,0,0,0,0,643,0
Подробнее здесь: https://stackoverflow.com/questions/792 ... h-an-error
Программа не может вернуться с ошибкой [закрыто] ⇐ Python
Программы на Python
-
Anonymous
1732559594
Anonymous
У меня есть код, который использует 3 разных класса, которые я создал, чтобы упростить предоставление информации, он должен работать, но он не работает и продолжает возвращаться с ошибкой ValueError: неверный литерал для int() с базой 10
it отказывается читать файл, который у меня есть правильно
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()
я ожидал, что он будет использовать созданные мной классы для чтения файла и возврата соответствующей информации
файл отформатирован вот так, и я мне не разрешено его менять
Constituency name, Region name,Country name,Constituency type,Member first name,Member surname,Member gender,Result,First party,Second party,Electorate,Valid votes,Invalid votes,Majority,Con,Lab,LD,RUK,Green,SNP,PC,DUP,SF,SDLP,UUP,APNI,All other candidates,Of which other winner
Aberafan Maesteg,Wales,Wales,County,Stephen,Kinnock,Male,Lab hold,Lab,RUK,"72,580","35,755",79,"10,354","2,903","17,838",916,"7,484","1,094",0,"4,719",0,0,0,0,0,801,0
Aberdeen North,Scotland,Scotland,Burgh,Kirsty,Blackman,Female,SNP hold,SNP,Lab,"75,925","42,095",115,"1,760","5,881","12,773","2,583","3,781","1,275","14,533",0,0,0,0,0,0,"1,269",0
Aberdeen South,Scotland,Scotland,Burgh,Stephen,Flynn,Male,SNP hold,SNP,Lab,"77,328","46,345",178,"3,758","11,300","11,455","2,921","3,199","1,609","15,213",0,0,0,0,0,0,648,0
Aberdeenshire North and Moray East,Scotland,Scotland,County,Seamus,Logan,Male,SNP gain from Con,SNP,Con,"70,058","38,188",170,942,"12,513","3,876","2,782","5,562",0,"13,455",0,0,0,0,0,0,0,0
Airdrie and Shotts,Scotland,Scotland,County,Kenneth,Stevenson,Male,Lab gain from SNP,Lab,SNP,"70,199","36,666",95,"7,547","1,696","18,871",725,"2,971",0,"11,324",0,0,0,0,0,0,"1,079",0
Aldershot,South East,England,Borough,Alex,Baker,Female,Lab gain from Con,Lab,Con,"78,553","48,544",179,"5,683","14,081","19,764","4,052","8,210","2,155",0,0,0,0,0,0,0,282,0
Aldridge-Brownhills,West Midlands,England,Borough,Wendy,Morton,Female,Con hold,Con,Lab,"70,268","40,912",156,"4,294","15,901","11,607","1,755","9,903","1,746",0,0,0,0,0,0,0,0,0
Alloa and Grangemouth,Scotland,Scotland,County,Brian,Leishman,Male,Lab gain from SNP,Lab,SNP,"70,680","41,201",74,"6,122","3,127","18,039","1,151","3,804","1,421","11,917",0,0,0,0,0,0,"1,742",0
Altrincham and Sale West,North West,England,Borough,Connor,Rand,Male,Lab gain from Con,Lab,Con,"74,025","51,452",184,"4,174","16,624","20,798","4,727","4,961","3,699",0,0,0,0,0,0,0,643,0
Подробнее здесь: [url]https://stackoverflow.com/questions/79224151/the-program-cant-seem-to-not-come-back-with-an-error[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия