2015-06-09 10 views
5

Ich bin neu in der Programmierung. Ich habe ein kleines Problem mit Python-Kodierung (mit Def-Funktion).Wie verwenden Sie die Eingabefunktion zusammen mit der Def-Funktion?

Also im Grunde muss der Code die kleinere Nummer aus 2 Zahlen geben.

Frage: Write-Codes die folgenden Aufgaben auszuführen:

  1. Definieren einer Funktion, die auf smaller_num bestimmen und gibt die kleinere Zahl der beiden Zahlen in beiden erfolgt.
    Benutzer fragen für zwei Zahlen
    die Funktion wird die kleinere Zahl zu bestimmen, und zeigt das Ergebnis

Also ich Benutzereingaben hatte stattdessen die Funktion des Aufrufs und das Hinzufügen von Wert in der Variablen. Diese

ist, wie mein Code wie folgt aussieht:

def smaller_num(x,y): 
    if x>y: 
     number= y 
    else: 
     number= x 
    return number 

smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")) 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller_num)) 

Wie kann ich es beheben? Momentan funktioniert es nicht, weil "x" nicht definiert ist. Aber ich habe das Gefühl, dass ich sie sowohl in der Def-Funktion als auch in der Input-Funktion klar definiert habe. Also, wie repariere ich das?

Danke für diejenigen, die auf diese Frage antworten.

+2

Bitte formatieren Sie Ihren Code – kvorobiev

+1

Ich muss Sie sehr empfehlen, uns zu zeigen, was Sie versucht haben, anstatt uns einfach zu fragen, wie Sie Ihre Aufgaben lösen können. Gut gemacht :). – TerryA

Antwort

6

Sie haben x und y global nie definiert. Sie haben es nur in der Funktion definiert, als Sie def smaller_num(x, y) getan haben.

Wenn Sie smaller_num(x= input("Enter first number:-") ,y= input("Enter second number:-")) tun, erstellen Sie keine Variablen mit den Namen x und y, Sie erstellen nur Parameter für Ihre Funktion.

Um Ihren Code zu beheben, erstellen Sie die Variable x und y, bevor Sie Ihre Funktion aufrufen:

def smaller_num(x, y): ## Can be rephrased to def smaller_num(x, y): 
    if x > y:   ##       if x > y: 
     number = y  ##        return y 
    else:    ##       else: 
     number = x  ##        return x 
return number 

x = input("Enter first number:-") 
y = input("Enter second number:-") 
result = smaller_num(x, y) 
print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(result)) 

Der andere Grund, der Code funktioniert nicht, weil Sie nicht den Rückgabewert von der Zuordnung Funktion zurück in eine Variable. Wenn Sie return etwas aus einer Funktion, und wieder beim Aufruf der Funktion, müssen Sie den Wert einer Variablen zuweisen, wie ich habe: result = smaller_num(x, y).

Wenn Sie Ihre Funktion aufgerufen haben, haben Sie den Wert nie einer Variablen zugewiesen, daher wurde sie verschwendet.


Verwenden Sie auch Python 3 oder 2.7? In Python 3 mit input() wird eine Zeichenfolge zurückgeben, und um dies in eine Ganzzahl zu konvertieren, können Sie int() um die input() Funktion aufrufen.

+0

Ich würde mich über Feedback freuen, warum mein Post downvoted wurde, danke :) – TerryA

+0

Das ist nicht wahr, Sie können x und y als 'row_input' in Ihren Parametern aufrufen und zuweisen und es funktioniert einwandfrei. Das einzige Problem ist das Fehlen des Speicherns des Ergebnisses. – SuperBiasedMan

+0

@SuperBiasedMan Wenn ich den Code falsch lese, sollte das, was ich darauf hingewiesen habe, ein Fehler sein, da er in der letzten Zeile 'str (x)' sagt, die niemals global erstellt wurde. Gleiches mit 'str (y)' – TerryA

3

Dies funktioniert:

def smaller_num(x,y): 

    if x>y: 
     number= y 
    else: 
     number= x 
    return number 


x = input("Enter first number:-") 

y = input("Enter second number:-") 

smaller = smaller_num(x,y) 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller)) 
1

dies funktionieren sollte:

def smaller_num(x,y): 
    if x>y: 
     number = y 
    else: 
     number = x 
    return number 

x = input("Enter first number:-") 
y = input("Enter second number:-") 

print("The smaller number between " + str(x) + " and " + str(y) + " is " + str(smaller_num(x,y))) 
0

Sie nicht Zuweisungsoperator in der def verwenden können, aber

print(str(smaller_num(input("Enter first number:-"),input("Enter second number:-")))) 

funktioniert gut.

Verwandte Themen