str() in Python interne Funktion mit der beliebige Variablen in Strings verwandelt werden (cast).
habe ich gerade heraus gefunden mt den Strings, Danke @Bulvai
str() in Python interne Funktion mit der beliebige Variablen in Strings verwandelt werden (cast).
habe ich gerade heraus gefunden mt den Strings, Danke @Bulvai
so ich habe mir jetzt mal alles angeschaut, ist schon echt schwer. Ich habe mich ja noch nie damit beschäftigt.
Ich werde wieter am Bal bleiben... ohe Fleiss kein Preis auch wen es schwer ist.
Bald ist Weihnachten, da habe ich auch viel mehr Zeit, mir genauer anzuschauen.
Im Moment sehr viel um die Ohren, da bin ich mal froh das ich keinen Computer mehr sehen muss
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.
Sieht zwar nicht gut aus mit der 'else' würde aber funktionieren:
gn =wandel namen in Großbuchstaben
gs =wandel search in GroßbuchstabenWir wandeln um damit es bei der Eingabe egal ist ob groß oder klein geschrieben und wenn diese Kombination von Buchstaben vorhanden ist auch immer etwas mittels find gefunden wird.
Einfach ausgedrückt stellt find fest ob ein String oder ein Teil-String in einem anderen Vorhanden ist.
Wieso bekommen wir das über print nicht alles in Großbuchstaben und wie können wir Buchstaben mit Zahlen vergleichen >=0
und wie können wir Buchstaben mit Zahlen vergleichen >=0
Du hast ein Verständnisproblem. Die Methode .find() sucht nach dem ersten Auftreten (der Position/dem Index) innerhalb einer Zeichenkette. Ist die kleiner als '0' (also -1), wurde nichts gefunden, ansonsten ist das die Position des gesuchten Buchstabens (0 -> 1. Stelle, 1 -> 2. Stelle usw.). Es wird also auf das Vorkommen an x-ter Stelle getestet, nicht auf den Buchstaben selbst.
Wieso bekommen wir das über print nicht alles in Großbuchstaben
Warum nicht? Du musst es Python nur sagen...
>>> hallo welt
>>> HALLO WELT
Warum nicht? Du musst es Python nur sagen...
das upper haben wir doch! wir füttern def suchen mit daten= das alles in Großbuchstaben.
search=raw_input('Wonach suchen sie? ')
daten=['Hans','Hannelore','Hanes','Hanf']
def suchen(search,daten):
for name in daten:
gn=name.upper()
gs=search.upper()
if gn.find(gs)>=0:
print name
else:
print search +' nicht gefunden'
suchen(search,daten)
Alles anzeigen
Du hast ein Verständnisproblem. Die Methode .find() sucht nach dem ersten Auftreten (der Position/dem Index) innerhalb einer Zeichenkette. Ist die kleiner als '0' (also -1), wurde nichts gefunden, ansonsten ist das die Position des gesuchten Buchstabens (0 -> 1. Stelle, 1 -> 2. Stelle usw.). Es wird also auf das Vorkommen an x-ter Stelle getestet, nicht auf den Buchstaben selbst.
Ja das mit dem Verständnisproblem ist mir schon bewusst!
Dann füttern wir def suchen mit dem Index von daten= oder wie?
So müsste aber der print den gefundenen Index wiedergeben. Wir bekommen aber den Inhalt.
So müsste aber der print den gefundenen Index wiedergeben. Wir bekommen aber den Inhalt.
Warum soll print den Index ausgeben? Wenn er einen Index >=0 (also den Suchbuchstaben gefunden) hat, gibt er den Namen aus: print name
Nabend,
bin jetzt auch endlich dazu gekommen alles durchzuarbeiten und hab gleich eine Frage zu Aufgabe 2.
Hab folgenden Code geschrieben
Die Idee war, dass eine gegebene Liste mit einem definierten Suchstring durchsucht wird.
Es soll abbgefragt werden, ob die Suchfunktion erfolgreich war - dann das Ergebnis ausgeben. Falls nicht, die ergebnislose Suche bestätigen.
Folgendes Problem dabei. Definiere ich die Variable ssearch z.B. als 'mit', wird diese einwandfrei ausgegeben.
Ist die Suche ergebnislos, wie im angehängten Code- Beispiel, gibt er mir jedoch nicht den erwarteten print aus, sondern 'none'. Wo ist meine Gedankenlücke ?
lg fuenfzigccm
Dein Script sucht aber auch nicht alles wen du i suchst sucht es nur das erste was ein i hat. Das return macht da die Probleme!
Das none kommt weil die Funktion durchläuft und er den print behelfe nicht bekommt.
So verschwindet none: Ist aber immer noch keine Lösung!
gsearch = ['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'
Alles anzeigen
Habe jetzt meins noch mal überarbeitet habe aber immer noch ein Fehler wieso?
search=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:
if ((name.upper()).find(str.upper(search))>=0):
return suchen
else:
print search + ' nicht gefunden'
return suchen
suchen(search,daten)
Alles anzeigen
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:
gsearch = ['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'
Alles anzeigen
Hab das noch mal überarbeitet. War doch nicht funktionsfähig
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
Leider auch nicht richtig da es wie alle anderen Lösungen nicht mehr funktioniert wie es eigentlich gedacht ist.
Der Sinn der Suche ist doch auch zu funktionieren wenn die gleichen Teils-Strings in den einzelnen List Elementen vorhanden sind.
Also als Beispiel:
Liste=['Hans','Hannelore','Hanes','Hanf']
suche='h' oder'H'
findet alle Namen da alle mit H anfangen.
suche='ha' oder 'Ha' findet alle Namen.
da alle den Teils-String 'ha' halten.
dagegen würde suche='hann' oder 'Hann' nur Hannelore finden.
Da Hannelore als einzig den Teil-String Hann enthält usw.
suche='s'
würde Hans und Hanes finden usw.
Der Vorteil dieser Suche ist :
Das ich Groß oder Kleinschreibung nicht beachten muß.
Das ich auch nur ein Teil des gesuchten Namens eingeben muß und trotzdem das Ergebnis in einer Auswahl habe.
Dabei spielt es keine Rolle ob der Teil-String am Anfang des Namens in der Mitte des Namens oder sich am Ende des Namens befindet.
Im Endeffekt das ich ohne viel zu schreiben das finde was ich suche!
man könnte es z.Beispiel so machen:
search=''
Liste=['Hans','Hannelore','Hanes','Hanf']
def Suche(search,Liste):
result=[]
for name in Liste:
if ((name.upper()).find(str.upper(search))>=0):
result.append(name)
else:
pass
return result
def weiter():
gesucht=Suche(search,Liste)
if len(gesucht) == 0:
print search + ' nicht gefunden'
else:
for name in gesucht:
print name
weiter()
Alles anzeigen
Gruß Jan
Bemühe mich Heute noch den nächsten Teil hochzuladen.
Aber zu verstehen was result in einer Funktion gegenüber einer normalen Liste für Vorteile hat.
Wäre jetzt auch angebracht rauszubekommen.
Also was macht result?
Gruß Jan
@skatulskijean
Könntest du bitte noch mal darauf zurück kommen.
Wir erstellen ein Addon (simples Tutorial von Anfang bis Ende)
Wir erstellen ein Addon (simples Tutorial von Anfang bis Ende)
Und man muss fuenfzigccm auch mal fragen ob er jetzt auch so weit ist!
Auf welche Post von Dir soll ich nochmal genauer eingehen?
Am besten du schreibst hier die Nummer oder Nummern des Beitrages.
Gruß Jan
Edit :
Die Fragen von Dir in den Beiträgen auf Die Du Dich mit den Links beziehst wurden doch beantwortet!
Also was genau ist Dein Problem?
Hatte eigentlich Links zu den Post.
368 und 372
Ja das mit dem Verständnisproblem ist mir schon bewusst!
Dann füttern wir def suchen mit dem Index von daten= oder wie?
So müsste aber der print den gefundenen Index wiedergeben. Wir bekommen aber den Inhalt.
368:
wir hatten die Syntax einer if -elif-else durchgenommen:
in dem Fall haben wir eine For Schleife .Bei jeden Durchlauf wird eine name in der Liste mit der if Bedingung verknüpft.Wenn die Bedingung erfüllt ist wird die Anweisung zur if Bedingung ausgeführt.Die Anweisung für diese Bedingung war print name und so wird der name ausgegeben.
Ist es das was Du nochmals wissen wolltest?
372
Das müßte Dir die Funktionsweise nochmals verdeutlichen:
search='nn'
daten=['Hans','Hannelore','Hanes','Hanf']
def suchen(search,daten):
for name in daten:
if ((name.upper()).find(str.upper(search))>=0):
print name
elif not search == name:
print search + ' nicht gefunden'
else:
pass
suchen(search,daten)
Alles anzeigen
und so würde es z.B funktionieren:
search='b'
daten=['Hans','Hannelore','Hanes','Hanf']
def suchen(search,daten):
result=[]
for name in daten:
if ((name.upper()).find(str.upper(search))>=0):
result.append(name)
elif not search == name:
result= search + ' nicht gefunden'
else:
pass
return result
print suchen(search,daten)
Alles anzeigen
@skatulskijean
Ja das da habe ich voll das Verständnisproblem vielleicht kommt das dann wen wir weitermachen ihr habt mir das schon so gut wie nur möglich versucht zu erklären ganz gut war da die andre Sintex von dir.
Und 372 wieso ich wen ich Hans suche das Hans nicht gefunden? immer noch bekomme
Du bekommst Hans nicht gefunden!
Da Hans ja nur im erstem Element der Liste vorkommt!
Ist das Element gerade im Schleifen Durchlauf:
Bekommst Du Hans!!
Das nächste Element wäre 'Hannelore' und Hans ist nicht Hannelore und hans oder Hans ist auch kein Teil-String von Hannelore so ist die Ausgabe.
Hans nicht gefunden
Gruß Jan
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!