Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
import sys
import tkinter
import turtle
import time
import random
import os
print(time.asctime())
print("Hier kannst du mit einem programm chatten.")
print("Erstellt am 32.07.2017.")
print("________________________________________________________")
begrüßungsmöglichkeiten = ["Einen schönen guten Tag.", "Guten Tag.", "HALLO."]
print(random.choice(begrüßungsmöglichkeiten))
random.shuffle(begrüßungsmöglichkeiten)
time.sleep(0.4)
for x in range(1):
eingabe = input("Eingabe: ")
if eingabe == "hi" or "hallo" or "hallo" or "hi" or "hallöchen" or "guten tag" or "guten abend" or "guten morgen" or "guten nachmittag":
print(random.choice(begrüßungsmöglichkeiten))
elif eingabe == ("was kann ich machen?") or ("was kann ich machen"):
print("du könntest mit mir schreiben...")
time.sleep(0.3)
print("...oder ein spiele spielen...")
time.sleep(0.3)
print("...oder vielleicht doch etwas praktisches wie einen wecker oder eine stoppuhr?")
time.sleep(0.3)
elif eingabe == ("wie spät ist es") or eingabe == ("wieviel uhr ist es") or eingabe == ("wie spät ist es?") or eingabe == ("wieviel uhr ist es?"):
print(time.asctime())
else:
print("tut mir leid, aber das verstehe ich nicht")
warum wird hier immer nur die erste Anweisung ausgeführt?
Zuletzt geändert von Anonymous am Dienstag 15. August 2017, 17:01, insgesamt 1-mal geändert.
Grund:Quelltext in Python-Codebox-Tags gesetzt.
@jan.b: Weil ``or`` nicht so funktioniert wie Du das vermutest. Das ist ein binärer Operator der weniger stark bindet als ``==``. ``a == b or c or d`` muss man als ``((a == b) or c) or d`` lesen, also entweder ist a == b wahr oder c ist wahr oder d ist wahr. Und eine nichtleere Zeichenkette ist als Wahrheitswert gesehen wahr, also ist die Bedingung bei dem ``if`` immer wahr.
anstatt `or` Kaskaden möchtest du dir vielleicht mal den `in`-Operator anschauen...
[codebox=pycon file=Unbenannt.txt]>>> known_words = ['foo', 'bar', 'spamegg', 'hello world!']
>>> 'foo' in known_words
True
>>> 'hello' in known_words
False
>>> 'hello world!' in known_words
True
>>>
[/code]
Das `for x in range(1)` ist sinnfrei. Da kannst du auch den Code direkt durchlaufen lassen, dass kommt hier auf's gleiche raus. Außerdem verwendest du das `x` im Code nirgends.
Warum importierst du die ganze Module, obwohl du sie nicht verwendest?
BlackJack hat geschrieben:@jan.b: Weil ``or`` nicht so funktioniert wie Du das vermutest. Das ist ein binärer Operator der weniger stark bindet als ``==``. ``a == b or c or d`` muss man als ``((a == b) or c) or d`` lesen, also entweder ist a == b wahr oder c ist wahr oder d ist wahr. Und eine nichtleere Zeichenkette ist als Wahrheitswert gesehen wahr, also ist die Bedingung bei dem ``if`` immer wahr.