Now we’ll do even more typing of variables and printing them out. This time we’ll use something called a “format string.” Every time you put " (double-quotes) around a piece of text you have been making a string. A string is how you make something that your program might give to a human. You print strings, save strings to files, send strings to web servers, and many other things.
Strings are really handy, so in this exercise you will learn how to make strings that have variables embedded in them. You embed variables inside a string by using specialized format sequences and then putting the variables at the end with a special syntax that tells Python, “Hey, this is a format string. Put these variables in there.”
As usual, just type this in even if you do not understand it and make it exactly the same.
my_name = 'Zed A. Shaw'
my_age = 35 # not a lie
my_height = 74 # inches
my_weight = 180 # lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'
print "Let's talk about %s." % my_name
print "He's %d inches tall." % my_height
print "He's %d pounds heavy." % my_weight
print "Actually that's not too heavy."
print "He's got %s eyes and %s hair." % (my_eyes, my_hair)
print "His teeth are usually %s depending on the coffee." % my_teeth
# this line is tricky, try to get it exactly right
print "If I add %d, %d, and %d I get %d." % (
my_age, my_height, my_weight, my_age + my_height + my_weight)
Remember to put # -*- coding: utf-8 -*- at the top if you use non-ASCII characters and get an encoding error.
What You Should See
$ python ex5.py
Let's talk about Zed A. Shaw.
He's 74 inches tall.
He's 180 pounds heavy.
Actually that's not too heavy.
He's got Blue eyes and Brown hair.
His teeth are usually White depending on the coffee.
If I add 35, 74, and 180 I get 289.
- Change all the variables so there is no my_ in front of each one. Make sure you change the name everywhere, not just where you used = to set them.
- Try to write some variables that convert the inches and pounds to centimeters and kilograms. Do not just type in the measurements. Work out the math in Python.
- Search online for all of the Python format characters.
- Try more format characters. %r is a very useful one. It’s like saying “print this no matter what.”
Common Student Questions
- Can I make a variable like this: 1 = 'Zed Shaw'?
- No, 1 is not a valid variable name. They need to start with a character, so a1 would work, but 1 will not.
- What does %s, %r, and %d do again?
- You’ll learn more about this as you continue, but they are “formatters.” They tell Python to take the variable on the right and put it in to replace the %s with its value. I don’t get it, what is a “formatter”? Huh? The problem with teaching you programming is that to understand many of my descriptions you need to know how to do programming already. The way I solve this is I make you do something, and then I explain it later. When you run into these kinds of questions, write them down and see if I explain it later.
- How can I round a floating point number?
- You can use the round() function like this: round(1.7333).
- I get this error TypeError: 'str' object is not callable.
- You probably forgot the % between the string and the list of variables.
- Why does this not make sense to me?
- Try making the numbers in this script your measurements. It’s weird, but talking about yourself will make it seem more real. Also, you’re just starting out so it won’t make too much sense. Keep going and more exercises will explain it more.