AttributeError: 'int' - Objekt hat kein Attribut 'split'

Mache ich das merge-sort-in python, aber ich habe ein problem. Wenn ich versuche, legen Sie die Liste von der Konsole aus (eine Zahl pro Zeile die return-eine Liste von string -) ich kann es konvertieren in Integer-zahlen. Können Sie mir helfen das problem zu verstehen.

import sys

def mergeSort(lista):
    res = []
    for i in lista[0].split():
        res.append(int(i))
    if len(res)>1:
        mid = len(res)//2
        lefthalf = res[:mid]
        righthalf = res[mid:]
        mergeSort(lefthalf)
        mergeSort(righthalf)
        i=0
        j=0
        k=0
        while i<len(lefthalf) and j<len(righthalf):
            if lefthalf[i]<righthalf[j]:
                res[k]=lefthalf[i]
                i=i+1
            else:
                res[k]=righthalf[j]
                j=j+1
            k=k+1

        while i<len(lefthalf):
            res[k]=lefthalf[i]
            i=i+1
            k=k+1

        while j<len(righthalf):
            res[k]=righthalf[j]
            j=j+1
            k=k+1
    print(res)

alist = []
for l in sys.stdin:
    alist.append(l.strip())
mergeSort(alist)

Code Fehler sagt: AttributeError: 'int' - Objekt hat kein Attribut 'split'
Die Eingabe ist eine Datei (von der shell mit dem Befehl: "Python ist3 merge.py < data.txt") mit der Liste von zahlen, eine pro Zeile.
Beispiel:
2
3
0
12
11
7
4
Sollte return 0 2 3 4 7 11 12
Natürlich habe ich nicht eine Ausgabe, weil der Fehler

  • All dies bedeutet, ist das erste Element in lista ist ein int Objekt, kein string. Irgendwie ist Ihr code ist angehängt eine ganze Zahl in der Liste sind Sie übergeben. Also das kann nicht sein ein komplettes code-Beispiel...
  • aber Sie sind alle eine Einheit string...
  • Der einzige Ort, dein code zeigt, dass verwendet str.split() wird auf ein element einer Liste, die angeblich Zeichenfolgen enthält. Du bist wahrscheinlich nicht auf der Suche auf den gleichen code ausgeführt wird oder Sie nicht posten der gleiche code läuft bist du hier.
  • Ich schwören können der code ist der gleiche. Wenn ich versuche die Ausgabe der "lista", es gibt: '1\r3\r4\r56\r65\r3\r4\r3\r2\r9\r10'
  • Ich sehe jetzt beim genaueren hinsehen. Wenn Sie anrufen mergeSort rekursiv sind Sie übergeben eine Liste von Integer-zahlen eher als eine Liste von strings. Sie sollten behandeln die Konvertierung von strings in Ganzzahlen außerhalb der mergeSort routine.
  • Wenn du dies als Antwort gebe ich dir die 10 Punkte Mann!!!!!!
  • Wenn Sie Zweifel haben, pdb ist dein Freund...
  • pdb? was ist es?

InformationsquelleAutor user28011994 | 2015-02-27
Schreibe einen Kommentar