Programmering i Python. Vilse!
Hej!
Jag ska skapa ett program som ger användaren möjlighet att se den aktuella Premier League serien (dock bara 4 lag). Laget samt värden som spelade matcher, förlorade resp. vunna matcher och poäng m.m. ligger på en separat .txt fil. Du ska även ha möjlighet att skriva in nytt matchresultat. Då anger du hemmalag resp. bortalag och skriver in resultat. Resultatet ska sen när man väljer att avsluta programmet sparas ner till .txt filen och det ska även sorteras i rätt ordning, högst poäng först.
Jag har en funktion "def öppna_fil():" som jag kör direkt och som skapar en lista med lag objekt.
TypeError: 'int' object is not callable
Har verkligen kört fast och därför uppskattas all hjälp. Kan skicka programmet samt .txt filen om det är någon som orkar ta en närmare titt på det.
Så här ser det ut i alla fall:
#---------------------------Klasser----------------------------------
# Lag
class lag():
def __init__(self, namn, spelade_matcher, vinster, oavgjort, förluster, gjorda, insläppta, poäng):
self.namn = namn
self.spelade_matcher = int(spelade_matcher)
self.vinster = int(vinster)
self.oavgjort = int(oavgjort)
self.förluster = int(förluster)
self.gjorda = int(gjorda)
self.insläppta = int(insläppta)
self.poäng = int(poäng)
# Tabellen med lagen och deras statistik
def __str__(self):
return self.namn + "S" + str(self.spelade_matcher) + "V" + str(self.vinster) + "O" + str(self.oavgjort) + "F" + str(self.förluster) + "G" + str(self.gjorda) + "I" + str(self.insläppta) + "P" + str(self.poäng)
# Jämför sträng med attribut
def __eq__(self,andra):
if self.namn==other:
return True
return False
# Lägger till en spelad match
def spelade_matcher(self):
self.spelade_matcher +=1
# Lägger till en vinst
def vinster(self):
self.vinster +=1
# Lägger till en oavgjord
def oavgjorda(self):
self.oavgjorda +=1
# Lägger till en förlust
def förluster(self):
self.förluster +=1
# Lägger till gjorda mål
def gjorda(self,antal):
self.gjorda += int(antal)
# Lägger till insläppta mål
def insläppta(self,antal):
self.insläppta += int(antal)
# Lägger till tre poäng
def poäng(self,pinnar):
self.poäng += int(pinnar)
# Sorterar tabellen enligt poäng, målskillnad, lagnamn
def __lt__ (self,andra):
if self.__poäng > andra.__poäng:
return True
elif self.__poäng < andra.__poäng:
return False
elif self.__poäng == andra.__poäng:
if self.__gjorda-self.__insläppta > andra.__gjorda-andra.__insläppta:
return True
elif self.__gjorda-self.__insläppta < andra.__gjorda-andra.__insläppta:
return False
elif self.__gjorda-self.__insläppta == andra.__gjorda-andra.__insläppta:
if self.__gjorda > andra.__gjorda:
return True
elif self.__gjorda < andra.__gjorda:
return False
elif self.__gjorda == andra.__gjorda:
if self.__namn < andra.__namn:
return True
elif self.__namn > andra.__namn:
return False
#--------------------------Funktioner-------------------------------
# Skriver ut menyn och användaren får möjlighet att välja vad man vill göra
def meny(ListaC):
print("VÄLKOMMEN TILL PREMIER LEAGUE")
svar = input("Tryck (1) + Enter -> Mata in resultat\nTryck (2) + Enter -> Visa tabellen\nTryck (3) + Enter -> Avsluta\n")
menyval = ["1","2","3"]
while svar not in menyval:
print("Ej korrekt svar")
svar = input("Tryck (1) + Enter -> Mata in resultat\nTryck (2) + Enter -> Visa tabellen\nTryck (3) + Enter -> Avsluta\n")
if svar == "1":
mata_in_resultat(ListaC)
elif svar == "2":
visa_serietabell(ListaC)
meny(ListaC)
elif svar == "3":
spara_resultat(ListaC)
avsluta()
# Låter användaren mata in lag samt matchresultat
def mata_in_resultat(listaC):
print("Välkommen till resultatinmataren för Premier League")
print("Här ser du den aktuella tabellen:\n")
visa_serietabell(ListaC)
print("\n")
print("Ange lag genom att mata in den siffran laget är placerat på (1=högst upp osv)\n")
hemmalag = input("Vilket lag är hemmalag?")
laglista = ["1","2","3","4"]
while hemmalag not in laglista:
print("Laget du angivit ingår inte i serien, var god försök igen.")
hemmalag = input("Vilket lag är hemmalag?")
bortalag = input("Vilet lag är bortalag?")
while bortalag not in laglista:
print("Laget du angivit ingår inte i serien, var god försök igen.")
bortalag = input("Vilet lag är bortalag?")
while bortalag == hemmalag:
print("Hemmalag och bortalag tillåts ej va samma.")
bortalag = input("Vilet lag är bortalag?")
hemmalag = int(hemmalag)-1
hemmalag = listaC[hemmalag]
bortalag = int(bortalag)-1
bortalag = listaC[bortalag]
print("hemmalag =", hemmalag)
print("bortalag =", bortalag)
while True:
match = input("Hur sluta matchen?")
if int(match[0]) > int(match[2]):
hemmalag.spelade_matcher()
bortalag.spelade_matcher()
hemmalag.vinster()
bortalag.förluster()
hemmalag.gjorda(match[0])
bortalag.gjorda(match[2])
hemmalag.insläppta(match[2])
bortalag.insläppta(match[0])
hemmalag.poäng()
elif int(match[0]) < int(match[2]):
hemmalag.spelade_matcher()
bortalag.spelade_matcher()
hemmalag.förluster()
bortalag.vinster()
hemmalag.gjorda(match[0])
bortalag.gjorda(match[2])
hemmalag.insläppta(match[2])
bortalag.insläppta(match[0])
bortalag.poäng()
elif int(match[0]) == int(match[2]):
hemmalag.spelade_matcher()
bortalag.spelade_matcher()
hemmalag.oavgjorda()
bortalag.oavgjorda()
hemmalag.gjorda(match[0])
bortalag.gjorda(match[2])
hemmalag.insläppta(match[2])
bortalag.insläppta(match[0])
hemmalag.poäng(1)
bortalag.poäng(1)
else:
print("Du har angett resultatet på felaktigt sätt.\n Ange målen för respektive lag enligt formatet X-Y, där x och y är siffror")
mata_in_resultat()
print("\n")
visa_serietabell(ListaC)
# Visar serietabellen för användaren
def visa_serietabell(ListaC):
print("Nuvarande tabell:\n")
for rad in ListaC:
print(rad)
# Läser in filen och sparar datan i en lista
def öppna_fil():
#try:
fil = open("Serietabell.txt", "r")
listaA = []
listaB = []
for rad in fil:
laget = rad.strip().split("/")
listaA.append(laget)
for varde in listaA:
namn = varde[0]
spelade_matcher = varde[1]
vinster = varde[2]
oavgjort = varde[3]
förluster = varde[4]
gjorda = varde[5]
insläppta = varde[6]
poäng = varde[7]
listaB.append(lag(namn, spelade_matcher, vinster, oavgjort, förluster, gjorda, insläppta, poäng))
return listaB
#except error...
# Sparar ner aktuella resultat till tabellfilen
def spara_resultat(ListaC):
pass
#with open("Serietabell.txt", "w") as file:
#for item in ListaC:
#Serietabell.txt.write("{}\n".format(item))
# Avslutar programmet
def avsluta():
from sys import exit
exit()
#------------------------Huvudprogrammet----------------------------
ListaC = öppna_fil()
meny(ListaC)
EDIT: Listan ser ut som följer:
Arsenal/0/0/0/0/0/0/0/0/0/
Manchester United/0/0/0/0/0/0/0/0/0/
Liverpool/0/0/0/0/0/0/0/0/0/
Manchester City/0/0/0/0/0/0/0/0/0/
EDIT2: Uppdaterat programmet och fått ett annat felmeddelande. (redigerade mitt inlägg)