Vielleicht ist er auch im Weihnachtsstreß. Hoffe auch daß es bald wieder weiter geht und daß es nix ernstes is.
Beiträge von Bulvai
-
-
Hast recht. Die Struktur hat's total zerschossen. Ich sollte es demnächst nicht mehr aus dem Editor rauskopieren. Wenn ich die Datei mit dem Windows-Editor öffne und kopiere bleibt die Struktur erhalten.
-
Komisch! Mit PyCharm läuft es tadellos. Nur mit Note++ wird der Code abgebrochen
-
Da es bis zur nächsten Übung jetzt etwas länger dauert, will die Zeit nicht ungenutzt verstreichen lassen. Drum mal ein paar Code-Zeilen zusammen gezimmert um das gelernte etwas zu vertiefen.
Mit Klassen geht es bestimmt noch etwas eleganter, aber ich möchte da nicht vorgreifen.Python
Alles anzeigenimport os import os.path def dirList(path): dir=[] counter=0 path2=os.listdir(path) print '\nAktuelles Verzeichnis - ',os.getcwd() print '\nVerzeichnisse:' print "0 - .." for liste in path2: if os.path.isdir(os.path.join(os.sep,os.getcwd(),liste)): dir.append(liste) counter+=1 print counter," - ",liste return dir def fileList(path): file=[] counter=0 path2=os.listdir(path) print '\nDateien:' for liste in path2: if os.path.isdir(os.path.join(os.sep,os.getcwd(),liste))==0: file.append(liste) counter+=1 print counter," - ",liste return file def dirMod(path): t=0 while t==0: dir=dirList(path) print 'w - Modus wechseln' print 'x - Exit' count=len(dir) ein=raw_input('Verzeichnis waehlen:') if ein=='w': return 'w' elif ein=='x': return 'x' elif int(ein)==0: os.chdir('..') t=1 elif int(ein)<=count: ein=int(ein) t=1 os.chdir(os.path.join(os.sep, path,dir[ein-1])) return os.path.abspath(os.getcwd()) def fileMod(path): t=0 files=[] while t==0: files=fileList(os.getcwd()) print 'w - Modus wechseln' print 'x - Exit' print files count=len(files) ein=raw_input('Welche Datei anzeigen?') if ein=='w': return 'w' elif ein=='x': return 'x' elif int(ein)==0: os.chdir('..') t=1 elif int(ein)<=count: ein=int(ein) t=1 f=open(os.path.join(os.sep, os.getcwd(),files[ein-1]),'r') inhalt=f.read() f.close() return inhalt i=dirMod(os.getcwd()) while i!='x': if i=='w': i=fileMod(os.getcwd()) else: i=dirMod(os.getcwd()) print i
-
-
Hab die Übungen soweit schon durch, morgen werde ich dann noch ein paar Funktionen daraus basteln.
Das einzige Problem war in Übung 12:
Erst lösche ich die 2 Dateien im Verzeichnis da ich dieses nur löschen kann wenn es leer ist mit:
for name in os.listdir(home):
os.remove(name)Danach möchte ich ins übergeordnete Verzeichnis mit os.chdir(Path) wechseln um das Verzeichnis auch löschen zu können:
>>> Wie das geht habe ich bisher nicht rausgefunden.
>>> Absoluter Pfad funktioniert natürlich (ist aber nicht der Sinn der Sache)Ich habs auch ohne Dateien zu löschen hinbekommen.
Ist wahrscheinlich anders gewollt, aber so gehts schneller -
Zitat von DimaCode
Alles anzeigengsearch = ['Liste','mit','gegebenen','Daten'] ssearch = 'Suchstring' def search(gsearch,ssearch): for name in gsearch: if ((name.upper()).find(str.upper(ssearch))>=0): return name else: return name erg = search(gsearch,ssearch) if (erg != 0): print erg else: print 'Suche ergebnislos'
Hab das jetzt mal nur schnell überflogen, weil ich möchte eigentlich gerade in die Pove.
Aber so müßte es gehen:Python
Alles anzeigengsearch = ['Liste','mit','gegebenen','Daten'] ssearch = 'x' def search(gsearch,ssearch): for name in gsearch: if (name.upper()).find(str.upper(ssearch))!=-1: return name return -1 erg = search(gsearch,ssearch) if (erg != -1): print erg else: print 'Suche ergebnislos'
Hab das noch mal überarbeitet. War doch nicht funktionsfähig
-
str() in Python interne Funktion mit der beliebige Variablen in Strings verwandelt werden (cast).
-
Zitat von DimaPython
Alles anzeigensearch=raw_input('Wonach suchen sie? ') daten=['Hans','Hannelore','Hanes','Hanf'] def suchen(search,daten): for name in daten: if ((name.upper()).find(str.upper(search))>=0): print name else: print search + ' nicht gefunden' suchen(search,daten)
Leider begreife ich einfach nicht die 6. Zeile in diesem Code!
Und ich bekomme es auch nicht hin das es nur die gefundenen zeigen tut sowie wen er nichts findet nur einmal print search + ' nicht gefunden' ausführt.In name wird bei jedem Durchlauf ein Datensatz von der Liste Daten gespeichert.
Mit name.upper() wird dieser in Großbuchstaben verwandelt.
In diesen wird mit name.upper().find() nach bestimmten Zeichen gesucht und der Index des zuerst vorkommenden Zeichens zurückgegeben.
Da der Datensatz mit upper() in Großbuchstaben verwandelt wurden muß dies, um was zu finden, auch mit dem zu suchenden String passieren.
str.upper(search) ist ein Cast bei dem die Varible in einen String und direkt in Großbuchstaben verwandelt wird. -
wieso das f= und f.Das begreife ich einfach nicht da ich auch ohne eine Datei erstelle
Pythonsearch='gg' def suchen(search): for name in ['Hans','Hannelore','Hanes','Hanf']: if ((name.upper()).find(str.upper(search))>=0): print name else: print search + ' nicht gefunden'
Was ist hier falsch das ich weder eine Fehler Meldung noch ein Ergebnis bekomme?
Im Augenblick fehlt mir es schwer das gelernte zu kombinieren und ich muss immer wider schauen wie die Syntax richtig zuschreiben ist.
Das gelernte zu lesen und zu verstehen geht bisher. Ich werde aber nicht aufgeben!!!Codedef suchen(search): for name in ['Hans','Hannelore','Hanes','Hanf'] if ((name.upper()).find(str.upper(search))>=0): print name else: print search + ' nicht gefunden' suchen('ns')
Sollte wohl eher so aussehen.Du mußt deine definierte Funktion immer mit FunktionsName(Variablenname, ...) aufrufen
-
\n bewirkt einen Zeilenvorschub
\t fügt einen Tabulator ein
print , bewirkt daß der Zeilenvorschub, der nach jeder Printanweisung ausgeführt wird, diesmal nicht gemacht wird
Code4. Was oder worin besteht der Unterschied zum einlesen der Datei mit read() gegenüber den einlesen der Datei in einer for Schleife?
Mit read liest man alles auf einen Schlag ein und mit For-Schleife Zeile für Zeile.Wobei mir beim rumprobieren aufgefallen ist, daß Python wohl keinen Inkrement wie i++ versteht.
-
Man kann auch mit den Namen eines Objektes innerhalb der Liste Suchen.
Wobei anhand des Objektes der Index dieses Objektes ausgeworfen wird.
Syntax:Listen Name.index(Objekt)
Beispiel:
Tiere=['Affe','Tiger','Kuh']
Tiere.index("Tiger")Zählen mit len()
oder man macht es unnützerweise so:
Code
Alles anzeigennamen = ['Paul','Petra','Klaus','Bernd'] i = 0 while i < len(namen)-1: if namen[i] == "Petra": print "Petra ist der ",i+1,". Eintrag" i=i+1 print "suche beendet"
wenn man so döspaddelig ist und den Index vergißt. -
Es gibt auch für Python exzellente IDEs. Notepad++ ist zwar universell, zählt aber nicht zu einer für Python optimalen IDE. Für die ersten Schritte ist das aber ok.
Werd' mir mal ein Python-Modul in Eclipse laden um in vollen Genuß einer Python-IDE zu kommen. -
Das mit dem Einrücken ist gewöhnungsbedürftig, aber in C++ vergißt man auch gerne mal ein ';'. Zum Glück werden die Abschließenden-} da von der IDE erzeugt.
-
Zitat von skatulskijean
Wobei zu beachten ist das die Variablen innerhalb einer Funktion trotz gleichen Namens erst einmal nix mit den Variablen außerhalb der Funktion zutun haben. Erst durch Funktionsaufrufe wie 'mixName(a,b)' werden die Werte der Funktion übergeben.
Bei der Initialisierung der Funktion könnte auch mit anderen Variablen gearbeitet werden.zB
def MixName (x,y):
-
So wie ich das jetzt lese, steht der Fehler schon in der Fehlerausgabe. Bei dir existiert höchstwahrscheinlich kein Modul mit dem Namen helper im Verzeichnis tools.