12 svar
139 visningar
GräddMaja behöver inte mer hjälp
GräddMaja 23
Postad: 3 maj 2022 12:35

TypeError: 'int' object is not callable

Jag behöver hjälp med min kod!

def main():
meny()#fel
while True:
try:
svar=input("Vill du fortsätta?(J/N)")
if svar =="N" or svar =="n":
break
else:
meny()
except ValueError:
meny()
def meny(): #menyfunktion

print("Välj 1-3 i menyn:"
"\n1. Medelvärdet av löner"
"\n2. Medianen av lönerna"
"\n3. Ge en löneökning till samtliga")

try:
val=int(input("Ange ditt val:"))
medelvärde=0
median=0
ny_lön=0

if val == 1:
medelvärde() 
elif val == 2:
median()
elif val == 3:
ny_lön()
else:
print("Du måste välja 1-3")
except ValueError:
print("Du måste välja ett heltal")

def månadslön():
try:
n=10
månadslön=[]
for i in range(0,n):
lön=int(input("Skriv in månadslön: "))
månadslön.append(lön)
list.sort(månadslön)
print("De tio månadslönerna är: ", månadslön)
def medelvärde(): #medelvärdensfunktion
summa =0
medel=0
for i in range(0,len(månadslön)):
summa+=list[i]
medel=summa/len(månadslön)
print("Medelvärdet av talen är:", medelvärde)
def median(): #medianfunktion
summa=0
median=0
for i in range (0, len(list)):
median=((list[4]+list[5])/len(list))
print("Medianen av talen är:", median)
def ny_lön(): # funktion för ny lön efter löneförhöjning
summa=0
n=1
ny_lön=((månadslön[n])*1.04)
for i in range (0, len(månadslön)):
ny_lön=((månadslön[0]*1.04), (månadslön[1]*1.04), (månadslön[2]*1.04), (månadslön[3]*1.04), (månadslön[4]*1.04), (månadslön[5]*1.04), (månadslön[6]*1.04), (månadslön[7]*1.04), (månadslön[8]*1.04), (månadslön[9]*1.04))
print("Ny lön är:", ny_lön)
except ValueError:
print("Du måste skriva ett heltal: ")

månadslön()

main()

 

Vad gör jag för fel?

Dr. G 9479
Postad: 3 maj 2022 12:56

try:

val=int(input("Ange ditt val:"))

medelvärde=0

median=0

ny_lön=0

 

if val == 1:

medelvärde() 

medelvärde är här ett heltal = 0. Sedan har du en funktion (?) som också heter medelvärde. Byt namn på något. 

GräddMaja 23
Postad: 3 maj 2022 14:00
Dr. G skrev:

try:

val=int(input("Ange ditt val:"))

medelvärde=0

median=0

ny_lön=0

 

if val == 1:

medelvärde() 

medelvärde är här ett heltal = 0. Sedan har du en funktion (?) som också heter medelvärde. Byt namn på något. 

Jag får samma fel svar fortfarande, även om jag ändrar. Har du någon annan ide?

Dr. G 9479
Postad: 3 maj 2022 14:11

Vilket felmeddelande får du? Det brukar indikera på vilket radnummer som det går snett. 

GräddMaja 23
Postad: 3 maj 2022 14:50
Dr. G skrev:

Vilket felmeddelande får du? Det brukar indikera på vilket radnummer som det går snett. 

Raden för medelvärde()

Meny()

Main()

Där får jag felmeddelande

Dr. G 9479
Postad: 3 maj 2022 15:25

Ingen av de funktionerna finns med i koden, eller ser jag fel?

GräddMaja 23
Postad: 3 maj 2022 15:29
Dr. G skrev:

Ingen av de funktionerna finns med i koden, eller ser jag fel?

Jo då ibörjan

Laguna Online 30484
Postad: 3 maj 2022 15:31

"medelvärde" kan inte både vara en funktion och ett tal.

GräddMaja 23
Postad: 3 maj 2022 17:21
Laguna skrev:

"medelvärde" kan inte både vara en funktion och ett tal.

Det har jag ändrat och ändå får jag samma fel

Laguna Online 30484
Postad: 3 maj 2022 20:29

Jaha, hur ser det ut nu då?

GräddMaja 23
Postad: 3 maj 2022 21:22
Laguna skrev:

Jaha, hur ser det ut nu då?

Jag har jobbat endel och nu ser det ut såhär, å den gr allt förutom att räkna ut medelvärde, median och ny_lön, så jag är tacksam för mer hjälp :)

CurtJ 1201
Postad: 3 maj 2022 21:38

Generellt sett så bör du använda ASCII (dvs inga svenska tecken) för identifierare. Python från vers 3 klarar svenska men tidigare versioner gör det inte och skulle du någon gång ge dig på ett annat språk så är det troligt att det språket bara klarar ASCII. Det vanliga är nog att använda engelska termer eller svenska med å,ä bytt mot a och ö bytt mot o. Men det är en smaksak. 

 

I löner definierar du månadslön som en vektor och fyller den. Det är en lokal variabel som bara är tillgänglig i den den funktionen. När du använder samma identifierare i de andra funktionerna så är det nya variabler som skapas i de funktionerna men som då inte har några värden. Flytta ut månadslön=[] till global scope, dvs direkt efter import statistics så är den tillgänglig i alla funktioner.

Jag förstår inte hur du räknar ut medianen. Den bör du nog titta på. Medianen är ju värdet i mitten av listan. 

i ny_lön så uppdateras inte månadslön[] utan värdena skrivs bara ut - men det kanske är meningen?

Annars ser det ut att fungera tror jag utan att ha kört det.

GräddMaja 23
Postad: 3 maj 2022 22:14
CurtJ skrev:

Generellt sett så bör du använda ASCII (dvs inga svenska tecken) för identifierare. Python från vers 3 klarar svenska men tidigare versioner gör det inte och skulle du någon gång ge dig på ett annat språk så är det troligt att det språket bara klarar ASCII. Det vanliga är nog att använda engelska termer eller svenska med å,ä bytt mot a och ö bytt mot o. Men det är en smaksak. 

 

I löner definierar du månadslön som en vektor och fyller den. Det är en lokal variabel som bara är tillgänglig i den den funktionen. När du använder samma identifierare i de andra funktionerna så är det nya variabler som skapas i de funktionerna men som då inte har några värden. Flytta ut månadslön=[] till global scope, dvs direkt efter import statistics så är den tillgänglig i alla funktioner.

Jag förstår inte hur du räknar ut medianen. Den bör du nog titta på. Medianen är ju värdet i mitten av listan. 

i ny_lön så uppdateras inte månadslön[] utan värdena skrivs bara ut - men det kanske är meningen?

Annars ser det ut att fungera tror jag utan att ha kört det.

Stort tack, detta löste problemet :) och jag fick naturligtvis ändra i medianen. TACK!

Svara
Close