Como posso imprimir variável e string na mesma linha em Python?


176

Estou usando python para descobrir quantas crianças nasceriam em 5 anos se uma criança nascesse a cada 7 segundos. O problema está na minha última linha. Como faço para que uma variável funcione quando estou imprimindo texto em ambos os lados?

Aqui está o meu código:

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"

Respostas:


261

Use ,para separar seqüências de caracteres e variáveis ​​durante a impressão:

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

, na instrução print separa os itens por um único espaço:

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

ou melhor, use a formatação de string :

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

A formatação de strings é muito mais poderosa e permite que você faça outras coisas, como: preenchimento, preenchimento, alinhamento, largura, precisão de conjunto, etc.

>>> 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

Nenhuma delas funciona em Pyton 3. Por favor, vote na resposta de Gagan Agrawal.
Axel Bregnsbo

58

mais dois

O primeiro

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

Ao adicionar strings, eles concatenam.

O segundo

Além disso, o formatmétodo de seqüências de caracteres (Python 2.6 e mais recente) é provavelmente a maneira padrão:

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

Este formatmétodo também pode ser usado com listas

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

ou dicionários

>>> 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

51

Python é uma linguagem muito versátil. Você pode imprimir variáveis ​​por diferentes métodos. Eu listei abaixo 4 métodos. Você pode usá-los de acordo com sua conveniência.

Exemplo:

a=1
b='ball'

Método 1:

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

Método 2:

print('I have',a,b)

Método 3:

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

Método 4:

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

Método 5:

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

A saída seria:

I have 1 ball


16

No python 3.6, você pode usar a Interpolação de String Literal.

births = 5.25487
>>> print(f'If there was a birth every 7 seconds, there would be: {births:.2f} births')
If there was a birth every 7 seconds, there would be: 5.25 births

1
O meu favorito para cordas complexas.
Jason LeMonier

14

Você pode usar os métodos string-f ou .format ()

Usando f-string

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

Usando .format ()

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

12

Você pode usar uma formatação:

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

ou neste caso simples:

print "There are ", births, "births"

2
tenha cuidado se usar essa segunda maneira, porque essa é uma tupla, não uma string.
TehTris

5

Se você estiver usando o python 3.6 ou mais recente, o f-string é o melhor e mais fácil

print(f"{your_varaible_name}")

3

Você primeiro criaria uma variável: por exemplo: D = 1. Em seguida, faça isso, mas substitua a string pelo que desejar:

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

3

Em uma versão python atual, você precisa usar parênteses, assim:

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

2

use formatação de string

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

se você estiver executando um projeto de brinquedo, use:

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

ou

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

1

Você pode usar a formatação de string para fazer isso:

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

ou você pode fornecer printvários argumentos, e os separará automaticamente por um espaço:

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

obrigado pela resposta Amber. Você pode explicar o que o 'd' faz após o símbolo%? obrigado
Bob Uni

2
%dsignifica "valor do formato como um número inteiro". Da mesma forma, %sseria "valor do formato como uma string" e %f"valor do formato como um número de ponto flutuante". Estes e mais estão documentados na parte do manual do Python à qual vinculei minha resposta.
Âmbar

1

Copiei e colei seu script em um arquivo .py. Eu executei como está no Python 2.7.10 e recebi o mesmo erro de sintaxe. Eu também tentei o script no Python 3.5 e recebi a seguinte saída:

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

Em seguida, modifiquei a última linha em que imprime o número de nascimentos da seguinte maneira:

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"

A saída foi (Python 2.7.10):

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

Eu espero que isso ajude.


1

Basta usar (vírgula) no meio.

Veja este código para entender melhor:

# 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

Um pouco diferente: Usando Python 3 e imprima várias variáveis ​​na mesma linha:

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

0

PITÃO 3

Melhor usar a opção de formato

user_name=input("Enter your name : )

points = 10

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

ou declarar a entrada como string e usar

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

points = 10

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

1
String "Enter your name :perde aspas de fechamento
barbsan 16/07/19

print ("Hello, {} your point is {} : ".format(user_name,points) falta o suporte de fechamento.
Hillsie 22/11/19

0

Se você usar uma vírgula entre as seqüências e a variável, assim:

print "If there was a birth every 7 seconds, there would be: ", births, "births"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.