13 svar
44 visningar
Sami 58
Postad: 28 nov 2020 10:12

Använda funktion i funktion

Jag har en fil med olika rader där det tex står:

1, 0.8, 0.4, 54

1, 0.2, 0.3, 12

2, 0.3, 0.3, 45

2, 0.5, 0.7, 19

och jag har skapat en funktion (def  value(fil) )som gör en dictionary av allt där första värdet skall vara key och sista indexed skall vara value, dvs i ovanstående fil har jag fått:

{1:[54,12], 2:[45,19]}. Koden stämmer och jag vill nu använda den funktion i denna kod:

def mean(file):
     calc=value(file)
     result={}
     for bat,val in sorted(calc.items()):
          mean = sum(val)/len(val)
          result[bat]=mean
      return result

print(mean('rader.txt'))

men jag får felmeddelandet :TypeError: unsupported operand type(s) for +: 'int' and 'str' och förstår ej vad som är fel

Laguna 14648
Postad: 28 nov 2020 10:37

Hur ser hela felmeddelandet ut?

Sami 58
Postad: 28 nov 2020 10:42


'' line 38, in mean
mean = sum(val)/len(val)

TypeError: unsupported operand type(s) for +: 'int' and 'str' ''

Laguna 14648
Postad: 28 nov 2020 10:44

OK, då skulle jag lägga in en spårutskrift på raden innan, som skriver ut val.

Sami 58
Postad: 28 nov 2020 10:51

Vad menar du?🙈 är ganska ny med programmering haha

Laguna 14648
Postad: 28 nov 2020 11:26

Före raden med mean= kan du lägga in en rad som gör

       print(val)

Sami 58
Postad: 28 nov 2020 11:43

Provade men får en tom dictionary haha

Laguna 14648
Postad: 28 nov 2020 11:46

Får du samma fel som tidigare? 

Sami 58
Postad: 28 nov 2020 11:48

Laguna 14648
Postad: 28 nov 2020 11:50

Och vad har val för värde? 

Sami 58
Postad: 28 nov 2020 11:54

val ska vara value i listform i en dictionary

Laguna 14648
Postad: 28 nov 2020 11:56

Det ska det nog, men vad har det faktiskt för värde när det blir fel? Gjorde du print(val)? 

Sami 58
Postad: 28 nov 2020 12:00

Alltså min def (mean)-funktion innehåller ju en annan funktion som jag skapat en dictionary i. Så använder en funktion i en funktion liksom

Provade med en testfil och har dictionary
” {1:[6,4,2], 2:[8,9,1]}

Laguna 14648
Postad: 28 nov 2020 12:02

Om du inte tar reda på värdet på val precis innan det blir fel så kommer vi inte längre. 

Svara Avbryt
Close