Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Numbers passed as command line arguments in python not interpreted as integers

Tags:

python

argv

I am familiar with C, and have started experimenting in python. My question is regarding the sys.argv command. I've read it is used for a command line interpreter, but when trying to execute a simple program I don't get the results I expect.

Code:

import sys  a = sys.argv[1] b = sys.argv[2]  print a, b  print a+b 

Input:

python mySum.py 100 200 

Output:

100 200 100200 

When I add the two arguments they are concatenated instead of the two values being added together. It seems that the values are being taken as strings.

How can I interpret them as numerics?

like image 946
Kalyan Avatar asked May 25 '12 09:05

Kalyan


People also ask

Can we pass list as command line ARGument in Python?

The arguments that are given after the name of the program in the command line shell of the operating system are known as Command Line Arguments. Python provides various ways of dealing with these types of arguments. One of them is sys module.


2 Answers

You can convert the arguments to integers using int()

import sys  a = int(sys.argv[1])  b = int(sys.argv[2])  print a, b  print a+b 

input: python mySum.py 100 200

output:

100 200 300 
like image 84
Wesley Avatar answered Sep 21 '22 12:09

Wesley


You also should validate the user input:

import sys  def is_intstring(s):     try:         int(s)         return True     except ValueError:         return False  for arg in sys.argv[1:]:     if not is_intstring(arg):         sys.exit("All arguments must be integers. Exit.")  numbers = [int(arg) for arg in sys.argv[1:]] sum = sum(numbers)  print "The sum of arguments is %s" % sum 
like image 23
Dr. Jan-Philip Gehrcke Avatar answered Sep 21 '22 12:09

Dr. Jan-Philip Gehrcke