Wie kann ich mehrere Dinge (fester Text und/oder variable Werte) auf einmal in derselben Zeile drucken?

Lesezeit: 4 Minuten

Benutzeravatar von user1985351
Benutzer1985351

Ich habe einen Code wie:

score = 100
name="Alice"
print('Total score for %s is %s', name, score)

Ich möchte es ausdrucken Total score for Alice is 100aber stattdessen bekomme ich Total score for %s is %s Alice 100. Wie kann ich alles in der richtigen Reihenfolge mit der richtigen Formatierung drucken lassen?


Siehe auch: Wie kann ich mehrere Dinge gleichzeitig auf derselben Zeile drucken? ; Wie füge ich den Wert einer Variablen in eine Zeichenfolge ein (interpoliere ihn in die Zeichenfolge)?

Benutzeravatar von Blender
Mixer

Es gibt viele Möglichkeiten, dies zu tun. Um Ihren aktuellen Code zu reparieren, verwenden Sie %-Formatierung, müssen Sie ein Tupel übergeben:

  1. Übergeben Sie es als Tupel:

    print("Total score for %s is %s" % (name, score))
    

Ein Tupel mit einem einzelnen Element sieht so aus ('this',).

Hier sind einige andere gängige Methoden, dies zu tun:

  1. Übergeben Sie es als Wörterbuch:

    print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})
    

Es gibt auch eine Zeichenfolgenformatierung im neuen Stil, die möglicherweise etwas einfacher zu lesen ist:

  1. Verwenden Sie die Zeichenfolgenformatierung im neuen Stil:

    print("Total score for {} is {}".format(name, score))
    
  2. Verwenden Sie die Zeichenfolgenformatierung im neuen Stil mit Zahlen (nützlich zum Neuordnen oder mehrfachen Drucken derselben):

    print("Total score for {0} is {1}".format(name, score))
    
  3. Verwenden Sie eine Zeichenfolgenformatierung im neuen Stil mit expliziten Namen:

    print("Total score for {n} is {s}".format(n=name, s=score))
    
  4. Zeichenfolgen verketten:

    print("Total score for " + str(name) + " is " + str(score))
    

Die deutlichsten zwei meiner Meinung nach:

  1. Übergeben Sie einfach die Werte als Parameter:

    print("Total score for", name, "is", score)
    

    Wenn Sie nicht möchten, dass Leerzeichen automatisch eingefügt werden print Ändern Sie im obigen Beispiel die sep Parameter:

    print("Total score for ", name, " is ", score, sep='')
    

    Wenn Sie Python 2 verwenden, können Sie die letzten beiden nicht verwenden, weil print ist keine Funktion in Python 2. Sie können dieses Verhalten jedoch aus importieren __future__:

    from __future__ import print_function
    
  2. Verwenden Sie das Neue f-string-Formatierung in Python 3.6:

    print(f'Total score for {name} is {score}')
    

  • Natürlich gibt es immer die uralte, missbilligte Methode: print("Total score for "+str(name)"+ is "+str(score))

    – Schlangen und Kaffee

    8. März 2013 um 4:46 Uhr


  • @SnakesandCoffee: Ich würde es einfach tun print("Total score for", name, "is", score)

    – Mixer

    8. März 2013 um 4:47 Uhr

  • Mein +1. Heutzutage bevorzuge ich die .format() besser lesbar als die älteren % (tuple) – obwohl ich Tests gesehen habe, die das zeigen % Interpolation ist schneller. Die print('xxx', a, 'yyy', b) ist auch für einfache Fälle in Ordnung. Ich empfehle auch zu lernen .format_map() mit Wörterbuch als Argument und mit 'ssss {key1} xxx {key2}' — schön zum Generieren von Texten aus Vorlagen. Es gibt auch die Älteren string_template % dictionary. Aber die Vorlagen sehen nicht so sauber aus: 'ssss %(key1)s xxx %(key2)s'.

    – pepr

    8. März 2013 um 13:15 Uhr

  • FYI, ab Python 3.6 bekommen wir f-Saitenso kannst du das jetzt auch machen print(f"Total score for {name} is {score}") ohne explizite Funktionsaufrufe (solange name und score sind offensichtlich im Geltungsbereich).

    – ShadowRanger

    7. Dezember 2016 um 1:41 Uhr


  • @SnakesandCoffee Warum ist print("Total score for "+str(name)"+ is "+str(score)) abgelehnt?

    – der Fragemann

    4. November 2020 um 0:42 Uhr

Benutzeravatar von Vikas Gupta
Vikas Gupta

Es gibt viele Möglichkeiten, das zu drucken.

Schauen wir uns das an einem anderen Beispiel an.

a = 10
b = 20
c = a + b

#Normal string concatenation
print("sum of", a , "and" , b , "is" , c) 

#convert variable into str
print("sum of " + str(a) + " and " + str(b) + " is " + str(c)) 

# if you want to print in tuple way
print("Sum of %s and %s is %s: " %(a,b,c))  

#New style string formatting
print("sum of {} and {} is {}".format(a,b,c)) 

#in case you want to use repr()
print("sum of " + repr(a) + " and " + repr(b) + " is " + repr(c))

EDIT :

#New f-string formatting from Python 3.6:
print(f'Sum of {a} and {b} is {c}')

  • Der erste Kommentar (#Normal string concatenation) ist zumindest irreführend.

    – Wolf

    19. Mai 2021 um 14:26 Uhr

Benutzeravatar von Gavriel Cohen
Gavriel Cohen

Verwenden: .format():

print("Total score for {0} is {1}".format(name, score))

Oder:

// Recommended, more readable code

print("Total score for {n} is {s}".format(n=name, s=score))

Oder:

print("Total score for" + name + " is " + score)

Oder:

print("Total score for %s is %d" % (name, score))

Oder: f-string Formatierung ab Python 3.6:

print(f'Total score for {name} is {score}')

Kann benutzen repr und automatisch die '' hinzugefügt:

print("Total score for" + repr(name) + " is " + repr(score))

# or for advanced: 
print(f'Total score for {name!r} is {score!r}') 

Abhisheks Benutzeravatar
Abhishek

In Python 3.6, f-string ist viel sauberer.

In früheren Versionen:

print("Total score for %s is %s. " % (name, score))

In Python 3.6:

print(f'Total score for {name} is {score}.')

Wird besorgt.

Es ist effizienter und eleganter.

Um es einfach zu halten, ich persönlich mag String-Verkettung:

print("Total score for " + name + " is " + score)

Es funktioniert sowohl mit Python 2.7 als auch mit 3.X.

HINWEIS: Wenn die Punktzahl ein ist intdann sollten Sie es in umwandeln Str:

print("Total score for " + name + " is " + str(score))

Benutzeravatar von Wolf
Wolf

Folgen Sie einfach diesem

grade = "the biggest idiot"
year = 22
print("I have been {} for {} years.".format(grade, year))

ODER

grade = "the biggest idiot"
year = 22
print("I have been %s for %s years." % (grade, year))

Und vergiss alle anderen, sonst kann das Gehirn nicht alle Formate abbilden.

Benutzeravatar von Peter Mortensen
Peter Mortensen

Probier’s einfach:

print("Total score for", name, "is", score)

1440490cookie-checkWie kann ich mehrere Dinge (fester Text und/oder variable Werte) auf einmal in derselben Zeile drucken?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy