2017-09-29 1 views
-2

Heute versuche ich einen booleschen Ausdruck (True oder False) zu verwenden, um meinen Code zu vervollständigen; Beachten Sie, dass ich den Befehl auf if processor['dictionary'] = True gesetzt habe. Es kann nicht ausgeführt werden, wenn der Code vorhanden ist. Aber wenn es nicht da ist, kann es normal laufen. Ich kann nicht die Ursache des Fehlers finden, die mich von der Ausführung des Codes verhindert, den Fehler Wesen:Fehler mit wahr und falsch

IndentationError: expected an indented block

hoffe, euch kann mir helfen.

dictionary = { 
    "chicken":"chicken two leg animal", 
    "fish":"fish is animal that live under water", 
    "cow":"cow is big vegetarian animal", 
    "space monkey":"monkey live in space", 
} 

print("how can i help you?") 
user_input = raw_input() 
print 
print("You asked: {}.".format(user_input)) 

processor = { 
    "dictionary":False, 
    "dictionary_lookup":[], 
} 

split = user_input.split(" ") 
combos = [' '.join(split[x:y]) for x in range(len(split)) for y in range(len(split)+1) if ' '.join(split[x:y]) != ""] 

for w in split: 

    w = w.lower() 

    if w in dictionary: 
     processor["dictionary"] = True 
     print w 

print combos 

# if processor ["dictionary"] = True 
response = {} 

for item in combos: 
    if dictionary.get(item): 
     response[item] = "what you were looking for is: {}.".format(dictionary[item]) 


if not response: 
    print("Response: I will get back to you!") 
    print 


for ind, (k,v) in enumerate(response.iteritems()): 
    print("Response {}: {} ({})".format(ind+1, v, k)) 
    print 
+0

Bitte den Code um 4 Leerzeichen als Basislinie einrücken (Sie können mehr Leerzeichen für Code einfügen, der Einzug benötigt). –

+0

Der Code nach dem 'if'-Block fehlt oder ist nicht richtig eingerückt. –

+0

wenn ich # vor wenn entferne. Der Code kann auch nicht ausgeführt werden, nachdem ich versucht habe, ihn korrekt einzurücken. Ich weiß nicht, wo ich sonst noch reparieren könnte. obwohl es scheint, ein ok code. aber ich möchte die Zeile nach # da setzen. – saitama

Antwort

1

Pythons booleans sind True/False (mit Großbuchstaben). Wahr ist nicht gleich Wahr.

Überprüfung auf truthness eines Objekts kann einfach

if processor['kamus']: 
    # your code here 

als selber Dies funktioniert wie Sie Ihren Code durchgeführt werden, es ist nur mehr klar. Wenn Sie keinen Vergleich oder andere Anweisungen in Ihre if-Anweisung setzen, prüft Python auf Wahrheit (True oder False, hat Daten oder leer)

Der Fehler Sie erhalten, weil Ihre Einrückung falsch ist, müssen Sie haben 4 Leerzeichen nach Anweisungen (def, if, etc)

+0

Ich frage mich, ob der Fehler eher wegen '=' anstatt '==' und keinem Doppelpunkt ist. Ich habe auch immer gedacht, dass für Anfänger ein explizites "== Wahr" klarer ist, als es weggelassen zu haben (weil es nur jemandem in den Sinn kommt, der den Trick/Grund dahinter bereits kennt). – jtlz2

+1

Ich stimme dem zweiten Teil zu, es ist expliziter, wenn True da ist. Der Fehler liegt an der Einrückung, nicht an dem '=' oder ':'. Im Falle eines dieser Fälle wäre der Fehler ein SyntaxError – Vinny

Verwandte Themen