Seite 1 von 1
Anfängerfrage, strings
Verfasst: Mittwoch 1. Juli 2020, 11:58
von 19mareut
hallo @all die das lesen
ich wollte mal so ne cardbase für mtg (wers kennt) machen. wie dem auch sei, ich möchte, dass wenn ich z.b. ne karte, kethis, habe und als eingabe ket habe, dass er mir alles ausgibt was ket irgendwo im namen hat. also genau ket nich ke t. also ne eingabe testen in schon in nem ordener vorgegebne strings wo das vorkommt
wenn ihrs versteht. weiteres beispiel:
der ordner enthält eine, mein, klei, hoche, maie. ich gebe 'ein' ein und bekomme dann eine, mein ausgegeben.
es wäre echt nett wenn ihr mir helft danke
Re: Anfängerfrage, strings
Verfasst: Mittwoch 1. Juli 2020, 12:48
von sparrow
Mit dem "in" Operator kann man testen, ob ein Teilstring in einem String enthalten ist.
Du musst also deine Datenstruktur durchlaufen und für die einzelnen Elemente prüfen ob das zutrifft.
Re: Anfängerfrage, strings
Verfasst: Mittwoch 1. Juli 2020, 12:55
von 19mareut
oh danke nett
Re: Anfängerfrage, strings
Verfasst: Mittwoch 1. Juli 2020, 14:14
von 19mareut
nochmal ne frage:
ich hab jz nen dokument das heißt karten.py
da steht
cards = kethis,kenrith,ulamorg
also die karten, die ich in der database haben möchte.
wie importiere und nutze ich das?
gibts nen konkretes beispiel?
Re: Anfängerfrage, strings
Verfasst: Mittwoch 1. Juli 2020, 19:14
von mutetella
Was verbirgt sich denn hinter den drei Namen, die Du in das tuple
cards steckst? Und wohin möchtest Du
cards denn importieren? Wenn Du innerhalb
karten.py die Zeile
stehen hast und
karten.py von wo aus immer auch importierst, dann hast Du dort das tuple
cards. Versuch' das doch einfach in Deiner Pythonshell:
Welche Ausgabe bekommst Du? Sollte eine Fehlermeldung erscheinen, dann recherchiere die Bedeutung und Du wirst sicher ein paar Schritte weiter kommen...
Re: Anfängerfrage, strings
Verfasst: Donnerstag 2. Juli 2020, 11:03
von 19mareut
oh ja omegalul ich hab den punkt vergessen.
wie kann ich eigentlich auf elemte der liste zugreifen?
also ich hab ja cards = 'kethis','ulamorg','kenrith' wie kann ich dann auch 'kethis zugreifen?'
Re: Anfängerfrage, strings
Verfasst: Donnerstag 2. Juli 2020, 11:05
von sparrow
Die Grundlagen der Sprache - und der Index-Zugriff auf Listen gehört da sicherlich zu - solltest du dir erarbeiten, indem du das
Tutorial in der Dokumentation durch gehst.
Re: Anfängerfrage, strings
Verfasst: Donnerstag 2. Juli 2020, 11:07
von 19mareut
ich gebs auf komme eh net drumrum ^^
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 16:11
von 19mareut
cards = ['kethis, the hidden hand','kenrith, the returned king','ulamorg, the careless hunger','jeskai elder','uro, titan of natures wrath','umori the collector','inspired ultimatum','savai triome','lurrus of the dream-den','crystalline giant']
enough = False
while not enough:
k = input('Kartenname: ')
n = 0
while n < len(cards):
if 'k' in cards[n]:
print(cards[n])
else:
pass
n = n + 1
kann mir wer sagen, wo der Fehler liegt?
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 16:47
von __blackjack__
@19mareut: Welcher Fehler? Was hast Du erwartet was der Code macht, und was macht er stattdessen?
Allgemeine Anmerkungen: `enough` ist überflüssig weil das nie irgendwo geändert wird, da kann man also gleich ``while True:`` schreiben.
`k` ist ein schlechter Variablenname weil der nicht beschreibt was der Wert für eine Bedeutung hat.
Die innere ``while``-Schleife ist das falsche Werkzeug. Man verwendet eine ``for``-Schleife wenn man über alle Elemente einer Liste iterieren möchte.
Das ``else: pass`` ist unsinnig weil das nix tut. Warum steht das da?
Die ``cards = …``-Zeile ist ein *bisschen* zu lang.
Code: Alles auswählen
#!/usr/bin/env python3
def main():
cards = [
"kethis, the hidden hand",
"kenrith, the returned king",
"ulamorg, the careless hunger",
"jeskai elder",
"uro, titan of natures wrath",
"umori the collector",
"inspired ultimatum",
"savai triome",
"lurrus of the dream-den",
"crystalline giant",
]
while True:
search_term = input("Kartenname: ")
for card in cards:
if "k" in card:
print(card)
if __name__ == "__main__":
main()
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 17:27
von 19mareut
ok danke. naja der hat mir immer nur die ersten 3 strings der liste ausgegeben
und das else: pass war dafür da weil der davor gar nix ausgegeben hatte
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 17:33
von 19mareut
und ich wollte ja eig ket eingeben und dann nur das rausbekommen wo das ket drinne ist
oder ich gebe hidde ein und bekomme auch nur kethis raus
also ich gebe etwas ein dasprogramm sucht alle strings durch ob das in dem string vorkommst und wenn ja spuckt es mir den string aus
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 18:22
von __blackjack__
@19mareut: Tja, Dein Code stimmt halt mit dem was Du beschreibst nicht überein. Und das mit dem ``else: pass`` kann nicht stimmen, denn das bewirkt rein gar nichts. Deswegen ist es ja überflüssig und sollte da nicht stehen.
Das hat auch nicht die ersten drei Zeichenketten ausgegeben sondern die ersten beiden und die vierte, denn nur in denen ist ein k enthalten.
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 18:34
von 19mareut
das k war nur die eingabevariable eigentlich
also das k ist falsch, aber wie kann ich dann da die eingabe hinmachen?
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 19:11
von Sirius3
Es macht halt einen Unterschied, ob man einen literalen String "k" schreibt oder die Variable k meint.
Re: Anfängerfrage, strings
Verfasst: Freitag 3. Juli 2020, 19:19
von 19mareut
oh danke ja jz gehts ^^ echt nett von euch dass ihr so schnell geantwortet habt, props gehen raus xDD