Gewusst wie: entfernen der Klammer von der Ausgabe python
Also ich habe eine Funktion, die hält ausspucken:
(10.3,11.4)
sein, wenn es spuckt:
10.3 11.4
Spielte ich herum und schrieb ein einfaches python-code, und ich scheinen, um das Konzept zu verstehen,
a=3
b=3
print a,b #returns 3 3
aber es funktioniert nicht für die Funktion unten, so dass ich Frage mich, warum es hält die Rücksendung der ()
import math
x=10.01
y=9.01
def d():
b = 2.00 * x / math.sqrt(7)
q=round(y-b,2)
r=round(y+b,2)
return q,r
print d() #returns (1.4399999999999999, 16.579999999999998)
- Das ist ein tuple. Warum willst du nicht dass es aussieht wie ein Tupel?
- Es ist eine berechtigte Frage: wenn
print d()
druckt ein Tupel, warum nichtprint a,b
? - da
d()
gibt ein 2-Tupel undprint a,b
gibt zwei Argumente für dieprint
- Anweisung. - Richtig. Aber ich war rhetorisch Anpassung der OP-Frage für Klarheit.
- ja sorry, klar, dass sofort, wenn ich drücken Sie die EINGABETASTE.
Du musst angemeldet sein, um einen Kommentar abzugeben.
print
ist (richtig) drucken der Tupel zurückgegeben wird, die von d.... Drucken Sie die Werte individuell, versuchen Sie dies:Oder so:
print a,b
nicht interpretierena,b
als Tupel, sondern als eine Abfolge von Parametern, um dieprint
- Anweisung. Beachten Sie, dass dieprint
- Anweisung ändert die syntax in Python ist3 für zusätzliche Verwirrung.Machen die
a,b
Fall parallel zu denq,r
Fall, es wäre mehr wie folgt Aussehen:In diesem Fall die
print
Anweisung würde erhalten ein Tupel, und nicht zwei einzelne Werte.print dret[0], dret[1]
.print('{} {}'.format(*d()))
ist sogar noch besser, wie es funktioniert, und auf die gleiche Weise, in der sowohl python 2 & python 3Der Grund dafür ist in der Anweisung "return q, r"
Können Sie nicht zurückgeben mehrerer Werte aus einer Funktion. Was python ist, dabei ist die Schaffung eines Tupels mit q und r, und die Rückkehr, die, wie return q, r interpretiert wird als return (q, r) Dann gedruckt wird, und gibt ein Tupel. So ist es wirklich äquivalent zu print (q, r)
Jedoch, print q, r ist anders ausgeführt, als multi-argument-print und druckt alle Argumente mit Leerzeichen dazwischen.
Hoffe, das klärt die Verwirrung.
Aus der offiziellen Dokumentation;
So zurückgeben mehrerer Werte aus einer Funktion, wie Sie hier tun, gibt Sie in ein Tupel von definition.
Versuchen explizit Auspacken des Tupels zurückgegeben
d()
: