2017-12-15 2 views
0

Ich versuche, eine klassische if-Anweisung mit Kriterien in Python 3 zu erstellen. Ich kann eine Zahl aus diesem Code eingeben, bin aber nicht in der Lage, herauszufinden, warum der Code nicht "heiß" gedruckt wird "oder" kalt ". Was kann ich tun, um das zu beheben? Muss ich eine elif mit dieser Aussage haben?Python 3.6 If-Anweisung mit Kriterien

N = float(input(("Enter Number: "))) 
def is_hot (N): 
    if N/2>1 and N-1>1: 
     print (N, "is hot") 
    else: 
     N/2<1 and N-1<1 
     print (N, "is cold") 
+3

Können Sie dies in einen Codeblock formatieren? Das im Klartext zu lesen ist irgendwie schmerzhaft. – enumaris

+4

Sieht so aus, als ob Sie ein 'elif' anstatt 'else' brauchen –

+1

yup es ist nicht richtig formatiert aber sonst lässt Sie keine bedingte Anweisung drin itll nur Fehler aus @BradSolomon sagte es richtig – OmegaNalphA

Antwort

0

Sie müssen Ihre Funktion reparieren, denn es sieht so aus, als ob es eine elif ...: statt einer else: braucht Und Sie müssen tatsächlich die Funktion auch aufrufen, sobald Sie Ihre Eingabe erhalten haben. So ...

def is_hot (N): 
    if N/2>1 and N-1>1:  # N > 2 
     print (N, "is hot") 
    elif N/2<1 and N-1<1: # N < 2 
     print (N, "is cold") 
    else:     # N is 2 
     print (N, "is just right!") 
n = float(input(("Enter Number: "))) 
is_hot(n) 

Bitte beachte, dass ich nicht N in beiden Orten verwendet haben, wenn die func aufrufen und wenn die func definieren. Es würde funktionieren, aber es ist nicht immer das Beste, was die Lesbarkeit des Codes angeht.

Außerdem sollten Sie Ihre Funktionen am besten oben in Ihrem Code auflisten.

Sie können und sollten wahrscheinlich auch andere Variablennamen in der Funktion als im aufrufenden Code verwenden. Dies ist nicht für die Funktionalität, sondern für die Lesbarkeit. Wenn jemand nicht aufpasst, können sie den gleichen Namen sehen und denken, dass es eine globale Variable ist. Auch hier müssen Sie keinen anderen Variablennamen verwenden, aber es empfiehlt sich, verschiedene Variablennamen zu verwenden. Nicht zuletzt sind die Variablennamen in der Funktion oft allgemeiner und die Variablennamen im aufrufenden Code spezifischer. Hier ein Beispiel:

def merge_lists(list1, list2): # generic.. 
    return zip(list1, list2) 
my_merged_inventory_list = merge_lists(list_of_stock_items, list_of_item_prices) 
+0

Was passiert, wenn N/2 1 ist? Ist es wirklich ein Fall von An oder Aus? Vielleicht brauchst du eine abschließende 'else:' Aussage, die sagt "ist genau richtig". Wenn N 2 ist, ist das heiß, kalt oder genau richtig? – Gary02127

+0

Vielen Dank für Ihre Hilfe! Das hat perfekt funktioniert. Warum sollte N nicht an beiden Orten verwendet werden? Was wäre die Logik dort? Wenn Sie die Funktion aufrufen, können Sie eine andere Variable verwenden? – Danielle

+0

Ja, Sie können und sollten wahrscheinlich einen anderen Variablennamen verwenden. Nicht für die Funktionalität, sondern für die Lesbarkeit. Wenn jemand nicht aufpasst, scheinen sie den gleichen Namen zu haben und denken, dass es eine globale Variable ist. Auch hier müssen Sie keinen anderen Variablennamen verwenden, aber es empfiehlt sich, verschiedene Variablennamen zu verwenden.Nicht zuletzt sind die Variablennamen in der Funktion oft allgemeiner und die Variablennamen im aufrufenden Code spezifischer. – Gary02127

3

Wie @Brad Solomon in den Kommentaren erwähnen. Statt sonst solltest du elif benutzen.

N = float(input(("Enter Number: "))) 
def is_hot (N): 
    if (N/2>1 and N-1>1): 
     print (N, "is hot") 
    elif (N/2<1 and N-1<1) : 
     print (N, "is cold") 
    else : 
     print(N,"neither hot nor cold") 

is_hot(N) 

Hinweis: - Sie können auch eine Standardbedingung hinzufügen (else Teil), wo es nicht jedem der Fälle überein. aktualisieren: - den Aufruf der Funktion hinzugefügt als

+0

Wie das OP, rufen Sie nicht tatsächlich die Funktion ... – Gary02127

3
von Gary vorgeschlagen

Weil Sie nur die Funktion is_hot(N) definiert, aber du hast es nicht nennen.

+3

Neu die Frage, ich denke, das ist tatsächlich, was @Danielle fragt. Rufen Sie nach Ihrer Funktion 'is_hot (N)' auf oder entfernen Sie die if-Anweisung von der Funktion. – Turksarama