Hallo und willkommen im Forum!
Du kannst nicht einfach natürliche Sprache irgendwie in Code kippen, so funktioniert das nicht. Dann gäbe es zu viele Doppeldeutigkeiten. im Fall von
musst du dir die Auswertung in etwas so vorstellen: es wird hier erst geprüft, ob "x" wahr ist oder nicht. Da dies zutrifft wird aus dem Ausdruck in etwa folgendes:
Dann wird getestet, ob "h" wahr ist, was auch wieder zutriff, also:
Da nun links und rechts von and True steht, wird der Ausdruck auch Wahr
Nun wird getestet, ob True in y vorkommt. Da eine Zeichenkette niemals True enthalten kann, ist das Ergebnis des Ausdrucks
Du suchst den Ausdruck
Nun zu der Situation, warum der erste Ausdruck scheinbar funktioniert und der zweite nicht. Ganz so strikt es es nämlich nicht, wie ich oben beschrieben habe. Das and liefert nämlich nicht True oder False zurück, sondern, immer die linke Seite oder die rechte Seite. Das hängt davon ab, welche Werte gegeben sind. Im ersten Beispiel wird hier das "h" als Ergebnis geliefert im unteren das "x". Ganz grob: sind beide Werte wahr, so wird der rechte wert als Ergebnis geliefert. Im ersten Fall bekommst du dann also ``"h" in "hallo"`` im zweiten hingegen ``"x" in "hallo"``.
Sebastian