[Tutor] string integers?

Dave Angel d at davea.name
Sun Feb 12 15:51:59 CET 2012

On 02/12/2012 08:25 AM, William Stewart wrote:
> I am trying to get 2 string variables and 2 integer variables to be able to be multiplied
> can anyone tell me what I did wrong
> str1 = raw_input("Type in a String: ")
> str2 = raw_input("Type in a String: ")
> int1 = raw_input("Type in a integer variable: ")
> int2 = raw_input("Type in a integer variable: ")
> print str1 + str2 + int1 + int2
> import math
> print str1, "*", str2, "*", int1, "*"int2  "=", str1, * str2, * int1 * int 2
> and it wont let me write int2
> I know this may look stupid to most people  but I am just new at this so dont laugh  :)

That's who this list is targeted at, people who are just learning 
Python.  Are you new to programming, or just to Python?  Anyway, welcome 
to Python-Tutor list.

If these 7 lines are in a file, and you try to run them, you get a 
specific error, pointing to a specific line.  When asking questions 
about Python error messages, please post the actual message, as it 
generally contains lots of clues as to what's wrong.

davea at think:~/temppython$ python william.py
   File "william.py", line 7
     print str1, "*", str2, "*", int1, "*"int2  "=", str1, * str2, * 
int1 * int 2
SyntaxError: invalid syntax

So now we both know the error is a syntax error, and it occurs on line 
7, which is conveniently redisplayed with a caret pointing at where the 
error was discovered (notice that in many email systems a proportional 
font may hide the correct column.  So trust what you saw on your own 
terminal window).  Sometimes the actual syntax error is a few characters 
earlier, but this is as fine-tuned as most compilers can manage.

That print line has 4 errors that I can immediately spot, and the 
compiler told you about the first one.  That error was in omitting the 
comma  before the first occurrence of the variable int2.  You butted a 
string literal right up to a variable name, with no operator between.

My usual advice when seeing a beginner with a complex line that gives a 
syntax error is to see if you can replace it by a few simpler lines.  
Then the error might be more obvious.  So use several print lines.  So 
what if the output isn't quite right;  you have some more debugging to 
do before you'll even see that output.

Now let me ask you, how is str1 any different from int1 ?  Python does 
not have typed variables, and it certainly pays no attention to the 
spelling of a name to guess what it's intended to hold.  The same name 
str1 can hold a string one time, an integer another time, a list yet 
another.  The only way you're going to get those 3rd and 4th lines to 
make integer objects is to convert the string that raw_input() returns 
into an integer.  So use
      int1 = int(raw_input("xxxxx"))

The next problem will probably be easier for you to spot, but if not, 
remember to post the full error message, not some summary of it.



More information about the Tutor mailing list