2017-01-23 1 views
1

Je prends un cours de Python débutant et ce fut l'une des leçons d'activité:impressions de sortie un caractère d'échappement []

mon code:

print "How old are you?", 
age = raw_input() 
print "How tall are you?", 
height = raw_input() 
print "How much do you weigh?" 
weight = raw_input() 
print "So, you're %r old, %r tall and %r heavy." % (age, height, weight) 

Je cours alors à travers Powershell et entrée les données lorsque vous êtes invité, mais quand je tape 5'9" pour la hauteur et il imprime l'entrée dans la chaîne finale, il ressemble à ceci:

So, you're '24' old, '5\'9"' tall and '140 lbs' heavy. 

Comment puis-je obtenir la barre oblique inverse pour aller loin

Répondre

4

En utilisant le drapeau de format %r, vous imprimez la rééd de la chaîne . La distinction est bien expliquée dans this question, mais dans votre cas particulier:

>>> s = '5\'9"' # need to escape single quote, so it doesn't end the string 
>>> print(s) 
5'9" 
>>> print(str(s)) 
5'9" 
>>> print(repr(s)) 
'5\'9"' 

Le rééd, en cherchant à être sans ambiguïté, a entouré la chaîne dans les guillemets simples et échappé à chacun des guillemets simples à l'intérieur de la chaîne. Ceci est bien parallèle avec la façon dont vous tapez la chaîne constante dans le code source.

Pour obtenir le résultat recherché, utilisez le drapeau au format %s, au lieu de %r, dans votre chaîne de format.

+0

Merci de m'avoir expliqué cela! J'essaie toujours de comprendre les différences entre les différents formats d'entrée. Tyty! – bootoons

+3

Pas de soucis! Si ceci ou la réponse de Moïse a répondu à votre question, n'oubliez pas d'accepter l'un d'eux en utilisant la coche sur la gauche; cela va prendre votre question hors de la liste des questions qui ont besoin de réponses. Bienvenue à StackOverflow! –

2

Ne pas utiliser rééd %r dans votre mise en forme, utilisez %s et les cordes sont tout simplement interpolées sans échapper à tout caractère:

print "So, you're %s old, %s tall and %s heavy." % (age, height, weight) 
#    ^ ^  ^