it-swarm.com.de

Mehrere Argumente in Python ausgeben

Dies ist nur ein Ausschnitt aus meinem Code:

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

Aber ich möchte, dass es ausgedruckt wird:

"Gesamtpunktzahl für (Name) ist (Punktzahl)"

dabei ist name eine Variable in einer Liste und score eine Ganzzahl. Dies ist Python 3.3, wenn das überhaupt hilft.

273
user1985351

Dafür gibt es viele Möglichkeiten. Um Ihren aktuellen Code mithilfe der % - -Formatierung zu korrigieren, müssen Sie ein Tupel übergeben:

  1. Übergebe es als Tupel:

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

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

Hier sind einige andere gebräuchliche Methoden:

  1. Übergebe es als Wörterbuch:

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

Es gibt auch eine neue Formatierung für Zeichenfolgen, die möglicherweise etwas einfacher zu lesen ist:

  1. Verwenden Sie eine neue Formatierung für Zeichenfolgen:

    print("Total score for {} is {}".format(name, score))
    
  2. Verwenden Sie eine neuartige Zeichenfolgenformatierung mit Zahlen (nützlich, wenn Sie dieselbe Zeichenfolge mehrmals neu anordnen oder ausdrucken möchten):

    print("Total score for {0} is {1}".format(name, score))
    
  3. Verwenden Sie eine neue Formatierung für Zeichenfolgen 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 klarsten zwei meiner Meinung nach:

  1. Übergeben Sie einfach die Werte als Parameter:

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

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

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

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

    from __future__ import print_function
    
  2. Verwenden Sie die neue f- Zeichenfolgenformatierung in Python 3.6:

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

Es gibt viele Möglichkeiten, das zu drucken.

Schauen wir uns ein anderes 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}')
50
Vikas Gupta

Verwenden Sie: .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))`
26
Gavriel Cohen

In Python 3.6 ist f-string 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.

19
Abhishek

Um es einfach zu halten, ich persönlich mag die Verkettung von Strings:

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

Es funktioniert mit Python 2.7 und 3.X.

HINWEIS: Wenn der Score ein int ist, sollten Sie ihn in str konvertieren:

print("Total score for " + name + " is " + str(score))
14
Paolo Rovelli

Versuch's einfach:

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

Folgen Sie einfach dieser

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

ODER

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

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

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

%s kann durch %d oder %f ersetzt werden

6
user6014455

Wenn score eine Zahl ist, dann

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

Wenn die Punktzahl eine Zeichenfolge ist, dann

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

Wenn der Score eine Zahl ist, dann ist es %d, wenn es ein String ist, dann ist es %s, wenn der Score ein Float ist, dann ist es %f

5
Supercolbat

Das ist was ich mache:

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

Denken Sie daran, ein Leerzeichen nach for und vor und nach is einzufügen.

3
user5700251

Benutze f-string:

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

Oder

Benutze .format:

print("Total score for {} is {}".format(name, score))
3
iNet