[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.





-- 

DaveA



More information about the Tutor mailing list