0

I was wondering if I could force the program to calculate an input before converting it to an integer. for example my code is

    shift=int(raw_input("input the shift you want "))

If I was to input 4**2 which should then in theory equal 16 however as the raw input is a string this cannot happen. I would like to know if there was force the program to calculate the input meaning if I inputted a calculation then the program would work it out instead of just converting it to an integer and causing an error.

ShadowRanger
  • 143,180
  • 12
  • 188
  • 271
Archie Godfrey
  • 143
  • 3
  • 10

1 Answers1

4

If you don't mind being terribly unsafe, you can use eval, which accepts a single string argument as input, and executes it as Python code:

shift = eval(raw_input("input the shift you want "))

And here is an explanation of why you shouldn't do this in any kind of production code.

A better option is to actually build a proper parser to behave like a calculator. There are plenty of resources for this floating around SO and elsewhere online.

Community
  • 1
  • 1
skrrgwasme
  • 9,358
  • 11
  • 54
  • 84