Skriv ut flera argument i Python

Det här är bara ett utdrag ur min kod:

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

Men jag vill att den ska skrivas ut:

"Total poäng för (namn) är (poäng)"

där name är en variabel i en lista och score är ett heltal. Detta är Python 3.3 om det hjälper något.

Det finns många olika sätt att göra detta. För att rätta din nuvarande kod med hjälp av %-formatering måste du skicka in en tupel:

  1. Lämna den som en tupel:

     print("Totalpoäng för %s är %s" % (name, score))

En tupel med ett enda element ser ut som ('this',).

Här är några andra vanliga sätt att göra det på:

  1. Överlämna det som en ordbok:

     print("Totalpoäng för %(n)s är %(s)s" % {'n': namn, 's': poäng})

Det'finns också strängformatering i ny stil, vilket kan vara lite lättare att läsa:

  1. Använd ny stil för strängformatering:

     print("Totalpoäng för {} är {}".format(name, score))
  2. Använd ny stil för strängformatering med siffror (användbart för att omordna eller skriva ut samma siffra flera gånger):

     print("Totalpoäng för {0} är {1}".format(name, score))
  3. Använd strängformatering i ny stil med explicita namn:

     print("Totalpoäng för {n} är {s}".format(n=namn, s=poäng))
  4. Sammanfoga strängar:

     print("Totalpoäng för " + str(name) + " är " + str(score)))

De två tydligaste, enligt min mening:

  1. Överför bara värdena som parametrar:

     print("Totalpoäng för", name, "is", score)

    Om du inte vill att mellanslag ska infogas automatiskt av print i exemplet ovan, ändra parametern sep:

     print("Totalpoäng för ", namn, " är ", poäng, sep='')

    Om du använder Python 2 kan du inte använda de två sista alternativen eftersom print inte är en funktion i Python 2. Du kan dock importera detta beteende från __future__:

     från __future__ importera print_function
  2. Använd den nya f-strängformateringen i Python 3.6:

     print(f'Totalpoäng för {name} är {score}')
Kommentarer (4)

För att hålla det enkelt gillar jag personligen strängkonkatenation:

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

Den fungerar med både Python 2.7 och 3.X.

OBS: Om score är ett int, bör du konvertera det till str:

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

Försök bara:

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