On Thu, Apr 11, 2013 at 11:38 AM, Arijit Ukil <arijit.u...@tcs.com> wrote:
> Thanks for the help. Now I have modifed the code as: > > import sys > > def main(argv): > > data = int(sys.argv[1]) > > avg = average (data) > > print "Average:", avg > > def average(num_list): > return sum(num_list)/len(num_list) > > if __name__ == "__main__": > main(sys.argv[1:]) > Two major problems: One: The __main__ methods processes (correctly) the args and drops argv[0] But your main() function is calling sys.argv again Two: sum() and len() expect a list -- more accurately an iterable. when you say data = argv[1] data is a scalar. If you know of list comprehensions, it can be easier or else, think of a function to convert a list of strings (argv[1:] to a list of floats; more general than int) -------------------- def arg2list(arg): args = [] for a in arg: args.append(float(a)) return args -------------------- Now replace the data = line with data = arg2list(argv) # NOT sys.argv HTH Asokan Pichai "Expecting the world to treat you fairly because you are a good person is a little like expecting the bull to not attack you because you are a vegetarian"
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor