Comment puis-je imprimer une variable et une chaîne sur la même ligne en Python?

176

J'utilise python pour déterminer combien d'enfants naîtraient dans 5 ans si un enfant naissait toutes les 7 secondes. Le problème est sur ma dernière ligne. Comment faire fonctionner une variable lorsque j'imprime du texte de chaque côté?

Voici mon code:

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"
Bob Uni
la source
Soyez prudent en 2020 (bon sens, je sais: D). Imprimer est devenu une fonction en Python3, doit être utilisé avec des crochets maintenant: print(something)(De plus, Python2 est obsolète depuis cette année.)
PythoNic

Réponses:

262

Utilisez ,pour séparer les chaînes et les variables lors de l'impression:

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

, dans l'instruction print sépare les éléments d'un seul espace:

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

ou mieux utiliser le formatage de chaîne :

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

Le formatage des chaînes est beaucoup plus puissant et vous permet également de faire d'autres choses, telles que: remplissage, remplissage, alignement, largeur, précision de réglage, etc.

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

Démo:

>>> 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
Ashwini Chaudhary
la source
Aucun de ces travaux ne fonctionne dans Pyton 3. Veuillez voter pour la réponse de Gagan Agrawal.
Axel Bregnsbo le
58

deux de plus

Le premier

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

Lors de l'ajout de chaînes, elles se concaténent.

Le deuxième

De formatplus, la méthode (Python 2.6 et plus récente) des chaînes est probablement la méthode standard:

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

Cette formatméthode peut également être utilisée avec des listes

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

ou dictionnaires

>>> 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
TehTris
la source
52

Python est un langage très polyvalent. Vous pouvez imprimer des variables par différentes méthodes. J'ai énuméré ci-dessous 4 méthodes. Vous pouvez les utiliser selon votre convenance.

Exemple:

a=1
b='ball'

Méthode 1:

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

Méthode 2:

print('I have',a,b)

Méthode 3:

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

Méthode 4:

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

Méthode 5:

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

La sortie serait:

I have 1 ball
Gagan Agrawal
la source
La décision est liée à votre style de programmation: M2 est la programmation procédurale, M3 est la programmation orientée objet. Le mot clé pour M5 est une chaîne littérale formatée . Des opérations de chaîne comme M1 et M4 doivent être utilisées si nécessaire, ce qui n'est pas le cas ici (M1 pour les dictionnaires et les tuples; M4 par exemple pour ascii-art et autres sorties formatées)
PythoNic
29

Si vous souhaitez travailler avec python 3, c'est très simple:

print("If there was a birth every 7 second, there would be %d births." % (births))
Entraîneur de codage Python
la source
16

Depuis python 3.6, vous pouvez utiliser l' interpolation de chaîne littérale.

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
PabTorre
la source
1
Mon préféré pour les cordes complexes.
Jason LeMonier
14

Vous pouvez utiliser le f-string ou .format () méthodes

Utilisation de f-string

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

Utiliser .format ()

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

Vous pouvez soit utiliser une chaîne de format:

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

ou dans ce cas simple:

print "There are ", births, "births"
enpenax
la source
2
soyez prudent si vous utilisez cette deuxième méthode, car il s'agit d'un tuple, pas d'une chaîne.
TehTris
5

Si vous utilisez python 3.6 ou plus récent, f-string est le meilleur et le plus simple

print(f"{your_varaible_name}")
Csmasterme
la source
3

Vous devez d'abord créer une variable: par exemple: D = 1. Ensuite, faites ceci mais remplacez la chaîne par ce que vous voulez:

D = 1
print("Here is a number!:",D)
Programmation Pythonbites
la source
3

Sur une version actuelle de python, vous devez utiliser des parenthèses, comme ceci:

print ("If there was a birth every 7 seconds", X)
Dror
la source
2

utiliser le formatage de chaîne

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

si vous faites un projet de jouet, utilisez:

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
Siddharth Dash
la source
1

Vous pouvez utiliser la mise en forme de chaîne pour ce faire:

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

ou vous pouvez donner printplusieurs arguments, et il les séparera automatiquement par un espace:

print "If there was a birth every 7 seconds, there would be:", births, "births"
ambre
la source
merci pour la réponse Ambre. Pouvez-vous expliquer ce que fait le «d» après le symbole%? merci
Bob Uni
2
%dsignifie "formater la valeur sous forme d'entier". De même, %sserait «format de la valeur sous forme de chaîne» et %f«format de valeur sous forme de nombre à virgule flottante». Ceux-ci et plus sont documentés dans la partie du manuel Python à laquelle j'ai lié dans ma réponse.
Amber
1

J'ai copié et collé votre script dans un fichier .py. Je l'ai exécuté tel quel avec Python 2.7.10 et j'ai reçu la même erreur de syntaxe. J'ai également essayé le script en Python 3.5 et j'ai reçu le résultat suivant:

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

Ensuite, j'ai modifié la dernière ligne où il imprime le nombre de naissances comme suit:

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"

Le résultat était (Python 2.7.10):

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

J'espère que ça aide.

Débogage255
la source
1

Utilisez simplement, (virgule) entre les deux.

Consultez ce code pour une meilleure compréhension:

# 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")
Faisal Ahmed
la source
0

Légèrement différent: en utilisant Python 3 et en imprimant plusieurs variables sur la même ligne:

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

PYTHON 3

Mieux vaut utiliser l'option format

user_name=input("Enter your name : )

points = 10

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

ou déclarez l'entrée en tant que chaîne et utilisez

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

points = 10

print("Hello, "+user_name+" your point is " +str(points))
Bromount
la source
1
La chaîne "Enter your name :manque le guillemet de fermeture
barbsan
print ("Hello, {} your point is {} : ".format(user_name,points) crochet de fermeture manquant.
Hillsie
0

Si vous utilisez une virgule entre les chaînes et la variable, comme ceci:

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

la source