2017-01-20 6 views
1

Ich bin neu bei Python und ich erkunde. Im folgenden Code versuche ich, eine Funktion aus einer Print-Anweisung aufzurufen, ist es legal?Kann ich eine Funktion in Python aus einer Druckanweisung aufrufen?

# My func 
def summer(num1,num2): 
print "The summation of the numbers is: %d " % (num1+num2) 

num1 = raw_input("Enter a number: ") 
num2 = raw_input("Enter another number: ") 

print "Again, the summation: %d " % (summer(num1,num2)) 

print "That is the end of the program." 

Jetzt ist die Linie

print "Again, the summation: %d " % (summer(num1,num2)) 

gültig? Ich erhalte einen Fehler.
Kann ich eine Funktion auf diese Weise aus einer Zeichenfolge aufrufen? Vielen Dank.

Der Fehler, die ich bekommen ist:

Traceback (most recent call last): 
    File "myfunc.py", line 9, in <module> 
    summer(num1,num2) 
    File "myfunc.py", line 3, in summer 
    print "The summation of the numbers is: %d " % (num1+num2) 
    TypeError: %d format: a number is required, not str 
+0

"einen Fehler" Getting bitte spezifisch und erwähnen die genaue Fehler Sie erhalten. –

+0

Ich habe den Fehler in der Frage bearbeitet. Die Antwort wurde bereits von @Eric Duminil gegeben. – Rio1210

Antwort

2

benötigen Sie den Code in Ihrer Methode einrücken, und einen String zurück. Sie müssen auch Ihre Zeichenfolgen in ganze Zahlen konvertieren:

def summer(num1,num2): 
    return "The summation of the numbers is: %d " % (int(num1)+int(num2)) 

num1 = raw_input("Enter a number: ") 
num2 = raw_input("Enter another number: ") 

print "Again, the summation: %s " % (summer(num1,num2)) 

print "That is the end of the program." 
+0

Vielen Dank, das erklärt dies. Außerdem, wenn ich Roh-Input nehme, welches ist das Standardformat, in dem die Daten gespeichert/aufgenommen werden? Schnur? Meine Frage ist, was in ** int ** in ** int konvertiert wird (num1) ** – Rio1210

+1

Raw_input gibt immer eine Zeichenkette zurück, auch wenn der Inhalt wie eine Zahl aussieht. Für die Arithmetik müssen Sie "3" in 3 umwandeln. –

1

Dies ist einfach. Um einen String in eine Zahl zu umwandeln dies zu tun:

int(String) 

nach was auch immer Sie

daher in eine ganze Zahl konvertieren möchten, würden Sie tun:

num1 = raw_input("Enter a number: ") 
num1 = int(num1) 

aber ein schneller Weg wäre:

Diese vorletzte Methode kann verwendet werden, wenn Sie num1 als String und eine Zahl (i t wird zu einer Zahl nach int (num1)

ändern Sorry, nur einen weiteren Fehler bemerkt. (Edited)

Ich war neugierig, warum Sie die Summe zeigen mussten, bevor die Zahlen definiert wurden, und wollte Ihnen auch sagen, dass Sie die% d nicht in der 3. Zeile und der 3. bis letzten Zeile benötigen do

print "The summation of the numbers is", (num1+num2) 

Another Flaw (Edit # 2)

der letzte Kommentar geändert Ihre print "The summation of the numbers is: %d " % (num1+num2)-return "The summation of the numbers is: %d " % (num1+num2) aber die Person ging nicht über ihn mit. Wenn Sie return tun, machen Sie den Wert des Befehls, was der Rückgabewert ist. Lassen Sie mich Ihnen ein Beispiel geben.

def MultNumByTwo(num): 
    num = num * 2 
    return num 
print MultNumByTwo(3) 

Dies wird sechs drucken, weil MultNumByTwonum nimmt die ich 3 gemacht und tut num = num * 2 die es einen neuen Wert von selbst mal zwei ergibt. Jetzt, wenn ich return num mache, nimmt den Wert der Nummer nach return.

Jetzt schauen wir uns Ihren Code an. Wenn Sie print "The summation of the numbers is: %d " % (num1+num2) tun, hat der Befehl keinen Wert. Es wird nur tun, was gesagt wurde, was diese zwei Zahlen addiert. Daher können Sie es nur alleine verwenden, weil es ein Befehl geworden ist. Sie können es nicht in einem Druckbefehl verwenden.

If% d Befehle in einem Druckbefehl nehmen war sowieso, wäre es Again, the summation: %d aber% d würde The summation of the numbers is: %d " % (num1+num2) und der gesamte Befehl würde

Auch die Summierung druckt sein werden: die Summe der Zahlen ist: (num1 + num2)

0

Hat kleine Änderungen an Ihrem Code vorgenommen. können int Werte für num1 und num2 erhalten, indem nur input()

def summer(num1,num2): 
    print "The summation of the numbers is: %d " % (num1+num2) 
    return num1+num2 

num1 = input("Enter a number: ") 
num2 = input("Enter another number: ") 

print "Again, the summation: %d " % (summer(num1,num2)) 
print "That is the end of the program." 

Ausgang mit:

Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> 
Enter a number: 5 
Enter another number: 10 
The summation of the numbers is: 15 
Again, the summation: 15 
That is the end of the program. 
>>> 
Verwandte Themen