Multiplying Strings
Robin L writes (excerpted):
I am trying to teach myself how to code and thought this was a good place to begin. I am having trouble with the "multiplying strings" section. I don't know anyone else who codes so I am hoping that you are still available at this email. This is the part about printing a letter in the shell. For some reason when I run mine the "print()" keeps actually printing "()".
Can you please help me figure out what I am doing wrong?
There's a pretty major difference between printing with older versions of Python (Python2.7 and earlier) and newer versions (Python3 and later). In Python2, print
is a statement, which means this works fine:
print "hi there"
If you try that in Python3, you'll get an error:
print "hi there"
File "<stdin>", line 1
print "hi there"
^
SyntaxError: Missing parentheses in call to 'print'
That's because print
in Python3 is a function not a statement.
Why does that make a difference? In Python2, this code...
print()
...is a print statement followed by an empty tuple. You're effectively telling Python to "print this empty tuple", and by quirk of the way the print statement works, you get ()
. The exact same code in Python3 is a function name (print) followed by an open bracket, no parameters, and a closing bracket. You're providing no parameters and the function prints nothing as a consequence. And that, basically, is the difference.
Cutting a long story short - all you're doing wrong is running an older version of Python. Check chapter one, and follow the instructions to install Python3, and the code will work as you expect.