2016-03-31 2 views
0

Dies ist mein Code für eine Herausforderung in Python-Programmierung für die Absolute BeginnerWarum druckt meine Druckfunktion das() und das "" zusammen mit der Anweisung?

food = input("What is your favorite entree? ") 

    dessert = input("What is your favorite dessert? ") 

    print("\nI am going to assume that your favorite meal is" , food + dessert) 

Statt Druck

I am going to assume that your favorite meal is 

Es druckt

('\nI am going to assume that your favorite meal is', 'steakcookies') 

Was muss ich ändern?

+0

'print' ist keine Funktion, Sie legen keine Klammern um das Argument. Die Klammern erstellen also eine Liste und es wird die Liste gedruckt. – Barmar

+0

@Barmar: Ein Tupel, keine Liste. – zondo

+0

Normalerweise sehen wir die entgegengesetzte Frage - Leute versuchen, die Python 2-Syntax auf Python 3 zu verwenden und durch den SyntaxError verwirrt zu werden. – user2357112

Antwort

3

Sie behandeln es wie Python 3 print() Funktion. Wenn Sie dies in Python 2 tun, druckt es das Objekt, das Sie es geben, die eine tuple ist. In Python 3 würden diese Klammern den Funktionsaufruf beschreiben, wobei jedes enthaltene Objekt ein Argument ist, das an die Funktion übergeben wird.

Wenn Sie es so, wie Sie erwarten, importieren Sie die print() Funktion an der Spitze des Codes verhalten soll:

from __future__ import print_function 

Von diesem Zeitpunkt an in diesem Programm, print auf die Funktion beziehen wird, nicht die Erklärung.

2

Sie müssen die Klammern nehmen:

print "\nI am going to assume that your favorite meal is" , food + dessert 

In Python2, print eine Aussage ist, keine Funktion. Wenn Sie die Klammern einschließen, behandelt print die Argumente als Teil eines Tupels. Sie sollten auch raw_input(), nicht input() verwenden. Alternativ setzen Sie from __future__ import print_function am Anfang der Datei.