В python 2 попытка деления на целые всегда будет давать int, даже если результатом обычно будет float. Решением этой проблемы является преобразование целых чисел в числа с плавающей запятой (принципиально другой тип данных), вместо этого ИЛИ используйте 3.0
вместо 3
(так как первое читается как число с плавающей точкой, а второе - целое число):
val1, val2, val3 = float(sys.argv[1]), float(sys.argv[2]), float(sys.argv[3])
или
avg = (val1 + val2 + val3) / 3.0
Если все числа являются числами с плавающей точкой, а не целыми числами, то результатом будет число с плавающей точкой.
Если бы вы использовали python 3 (что следует; python2 официально больше не поддерживается), это не является проблемой: целочисленное деление имеет свой собственный оператор //
, и этот тип операции всегда будет вызывать float, если ответ не будет целым числом.