2016-04-04 2 views
0

ich ein Programm mache, dass, wenn ein Dreieck bestimmt stumpf ist (O), akute (A) oder rechts (R)Eingeben einer Liste von Werten in eine Funktion

Enter in the length of angles 
>>> 3 8 9 
TypeError: pythag() takes exactly 3 arguments (1 given) 

Ich verstehe, warum ich erhalte der Fehler, aber was ich versuche zu tun ist irgendwie die Werte der Liste in die Funktion und Schleife dann rufen Sie die Funktion.

input = raw_input("Enter in the length of angles\n>>> ") #>>> 3 8 9 
lst = input.split() #splits the input into a list by whitespace 
for i in lst: #converts the values in the list to integers 
    int(i) 

def pythag(a,b,c): #function to perform calculation 
    if a^2 + b^2 != c^2: 
     if c^2 > a^2 or b^2: 
      return "A" 
     else: 
      return "O" 
    else: 
     return "R" 

pythag(lst) 

Irgendwelche Vorschläge?

Vielen Dank im Voraus.

+1

'pythag (* lst)' wird die Aufgabe erledigen. Related: http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-python-parameters –

Antwort

3

Erstens, int(i) tut nichts zur ursprünglichen Liste, also enthält es noch Zeichenketten. Zweitens, wo Ihre Ausnahme auftritt, übergeben Sie immer noch ein einzelnes Argument an die Funktion.

lst = [int(i) for i in lst] # convert the input 
pythag(*lst) # same as pythag(lst[0], lst[1], ...) 
+0

Könnten Sie bitte erläutern, warum meine ursprüngliche for-Schleife die Elemente nicht konvertiert der Liste in ganze Zahlen? – avbirm

+1

@avbirm 'int (i)' konvertiert das übergebene Argument in eine Ganzzahl, ohne den Wert zu ändern (was in unserem Fall eine Zeichenkette ist und daher als solche unveränderlich ist). Selbst wenn Sie 'i = int (i)' in die gleiche Schleife geschrieben hätten, hätte dies keine Auswirkungen auf die ursprüngliche Liste, da es nur den Namen 'i' auf den neuen Wert zurückbindet. – bereal

+0

Verstanden, also besteht der Unterschied darin, dass Sie die Werte mit dem "lst =" in int umwandeln, anstatt nur eine For-Schleife zu schreiben, die nur i modifiziert. – avbirm

Verwandte Themen