Come posso stampare variabili e stringhe sulla stessa riga in Python?


176

Sto usando Python per capire quanti bambini sarebbero nati in 5 anni se un bambino fosse nato ogni 7 secondi. Il problema è nella mia ultima riga. Come faccio a far funzionare una variabile quando stampo il testo su entrambi i lati?

Ecco il mio codice:

currentPop = 312032486
oneYear = 365
hours = 24
minutes = 60
seconds = 60

# seconds in a single day
secondsInDay = hours * minutes * seconds

# seconds in a year
secondsInYear = secondsInDay * oneYear

fiveYears = secondsInYear * 5

#Seconds in 5 years
print fiveYears

# fiveYears in seconds, divided by 7 seconds
births = fiveYears // 7

print "If there was a birth every 7 seconds, there would be: " births "births"

Fai attenzione nel 2020 (buon senso, lo so: D). La stampa è diventata una funzione in Python3, ora deve essere utilizzata tra parentesi: print(something)(Anche Python2 è obsoleto da quest'anno.)
PythoNic

Risposte:


262

Utilizzare ,per separare stringhe e variabili durante la stampa:

print "If there was a birth every 7 seconds, there would be: ",births,"births"

, nell'istruzione print separa gli articoli in un unico spazio:

>>> print "foo","bar","spam"
foo bar spam

o meglio usare la formattazione delle stringhe :

print "If there was a birth every 7 seconds, there would be: {} births".format(births)

La formattazione delle stringhe è molto più potente e ti consente di fare anche altre cose, come: riempimento, riempimento, allineamento, larghezza, precisione di impostazione ecc

>>> print "{:d} {:03d} {:>20f}".format(1,2,1.1)
1 002             1.100000
  ^^^
  0's padded to 2

demo:

>>> births = 4
>>> print "If there was a birth every 7 seconds, there would be: ",births,"births"
If there was a birth every 7 seconds, there would be:  4 births

#formatting
>>> print "If there was a birth every 7 seconds, there would be: {} births".format(births)
If there was a birth every 7 seconds, there would be: 4 births

Nessuno di questi lavori in Pyton 3. Per favore vota la risposta di Gagan Agrawal.
Axel Bregnsbo,

58

ancora due

Il primo

 >>>births = str(5)
 >>>print "there are " + births + " births."
 there are 5 births.

Quando si aggiungono stringhe, si concatenano.

Il secondo

Anche il formatmetodo di stringhe (Python 2.6 e versioni successive) è probabilmente il modo standard:

>>> births = str(5)
>>>
>>> print "there are {} births.".format(births)
there are 5 births.

Questo formatmetodo può essere utilizzato anche con gli elenchi

>>> format_list = ['five','three']
>>> print "there are {} births and {} deaths".format(*format_list) #unpack the list
there are five births and three deaths

o dizionari

>>> format_dictionary = {'births': 'five', 'deaths': 'three'}
>>> print "there are {births} births, and {deaths} deaths".format(**format_dictionary) #yup, unpack the dictionary
there are five births, and three deaths

52

Python è un linguaggio molto versatile. È possibile stampare le variabili con metodi diversi. Ho elencato di seguito 4 metodi. Puoi usarli secondo la tua convenienza.

Esempio:

a=1
b='ball'

Metodo 1:

print('I have %d %s' %(a,b))

Metodo 2:

print('I have',a,b)

Metodo 3:

print('I have {} {}'.format(a,b))

Metodo 4:

print('I have ' + str(a) +' ' +b)

Metodo 5:

  print( f'I have {a} {b}')

L'output sarebbe:

I have 1 ball

La decisione è legata al tuo stile di programmazione: M2 è una programmazione procedurale, M3 è una programmazione orientata agli oggetti. La parola chiave per M5 è letterale stringa formattata . Se necessario, si dovrebbero usare operazioni su stringa come M1 e M4, il che non è il caso qui (M1 per dizionari e tuple; M4 ad es. Per arte ascii-art e altri formati di output)
PythoNic



14

Puoi usare la f-string o .format () metodi

Utilizzando f-string

print(f'If there was a birth every 7 seconds, there would be: {births} births')

Utilizzando .format ()

print("If there was a birth every 7 seconds, there would be: {births} births".format(births=births))

12

Puoi utilizzare una stringa di formato:

print "There are %d births" % (births,)

o in questo semplice caso:

print "There are ", births, "births"

2
fai attenzione se usi questo secondo modo, perché è una tupla, non una stringa.
TehTris,

5

Se stai usando python 3.6 o versioni successive, f-string è la migliore e più semplice

print(f"{your_varaible_name}")

3

Dovresti prima creare una variabile: ad esempio: D = 1. Quindi fai questo, ma sostituisci la stringa con quello che vuoi:

D = 1
print("Here is a number!:",D)

3

Su una versione attuale di Python devi usare la parentesi, in questo modo:

print ("If there was a birth every 7 seconds", X)

2

usa la formattazione String

print("If there was a birth every 7 seconds, there would be: {} births".format(births))
 # Will replace "{}" with births

se stai facendo un progetto giocattolo usa:

print('If there was a birth every 7 seconds, there would be:' births'births) 

o

print('If there was a birth every 7 seconds, there would be: %d births' %(births))
# Will replace %d with births

1

È possibile utilizzare la formattazione delle stringhe per fare ciò:

print "If there was a birth every 7 seconds, there would be: %d births" % births

oppure puoi fornire printpiù argomenti e li separerà automaticamente di uno spazio:

print "If there was a birth every 7 seconds, there would be:", births, "births"

grazie per la risposta Amber. Puoi spiegare cosa fa la 'd' dopo il simbolo%? grazie
Bob Uni il

2
%dsignifica "formato valore come numero intero". Allo stesso modo, %ssarebbe "valore del formato come stringa" ed %fè "valore del formato come numero in virgola mobile". Questi e altri sono documentati nella parte del manuale di Python a cui ho collegato la mia risposta.
Ambra,

1

Ho copiato e incollato il tuo script in un file .py. L'ho eseguito così com'è con Python 2.7.10 e ho ricevuto lo stesso errore di sintassi. Ho anche provato lo script in Python 3.5 e ho ricevuto il seguente output:

File "print_strings_on_same_line.py", line 16
print fiveYears
              ^
SyntaxError: Missing parentheses in call to 'print'

Quindi, ho modificato l'ultima riga in cui viene stampato il numero di nascite come segue:

currentPop = 312032486
oneYear = 365
hours = 24
minutes = 60
seconds = 60

# seconds in a single day
secondsInDay = hours * minutes * seconds

# seconds in a year
secondsInYear = secondsInDay * oneYear

fiveYears = secondsInYear * 5

#Seconds in 5 years
print fiveYears

# fiveYears in seconds, divided by 7 seconds
births = fiveYears // 7

print "If there was a birth every 7 seconds, there would be: " + str(births) + " births"

L'output era (Python 2.7.10):

157680000
If there was a birth every 7 seconds, there would be: 22525714 births

Spero che aiuti.


1

Basta usare, (virgola) in mezzo.

Vedi questo codice per una migliore comprensione:

# Weight converter pounds to kg

weight_lbs = input("Enter your weight in pounds: ")

weight_kg = 0.45 * int(weight_lbs)

print("You are ", weight_kg, " kg")

0

Leggermente diverso: usare Python 3 e stampare diverse variabili nella stessa riga:

print("~~Create new DB:",argv[5],"; with user:",argv[3],"; and Password:",argv[4]," ~~")

0

PYTHON 3

Meglio usare l'opzione di formattazione

user_name=input("Enter your name : )

points = 10

print ("Hello, {} your point is {} : ".format(user_name,points)

o dichiarare l'input come stringa e utilizzare

user_name=str(input("Enter your name : ))

points = 10

print("Hello, "+user_name+" your point is " +str(points))

1
La stringa "Enter your name :manca le virgolette di chiusura
barbsan

print ("Hello, {} your point is {} : ".format(user_name,points) staffa di chiusura mancante.
Hillsie,

0

Se usi una virgola tra le stringhe e la variabile, in questo modo:

print "If there was a birth every 7 seconds, there would be: ", births, "births"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.