Функция, вычисляющая площади разных геометрических фигур (Python)

Тема: 
Функции

Допустим, требуется написать функцию, которая может вычислять площадь круга, прямоугольника и треугольника. Площадь какой фигуры необходимо вычислить, должно определяться передаваемыми аргументами. Так для вычисления площади круга достаточно знать лишь его радиус. Чтобы вычислить площадь прямоугольника, требуется уже два числа - его длина и ширина. Для определения площади треугольника, например, по формуле Герона необходимы длины всех трех сторон, т. е. в функцию надо передать три числа.

Чтобы у пользователя не спрашивать, площадь какой фигуры он хочет узнать, можно запрашивать ввод данных одной строкой и именно ее передавать в функцию. В функции строку надо преобразовать в список чисел и в зависимости от их количества произвести вычисления по тому или иному пути.

import math
 
def figure(a):
    a = a.split()
    for i in range(len(a)):
        a[i] = float(a[i])
    if len(a) == 1:
        square = math.pi * a[0]**2
        print("Площадь круга ", square)
    elif len(a) == 2:
        square = a[0]*a[1]
        print("Площадь прямоугольника ", square)
    elif len(a) == 3:
        p = (a[0]+a[1]+a[2])/2
        square = math.sqrt(p * (p-a[0]) * (p-a[1]) * (p-a[2]))
        print("Площадь треугольника ", square)
 
param = input("Введите параметры через пробел: ")
figure(param)

Примеры вызова функции:

pl@pl-desktop ~ $ python3 square.py 
Введите параметры через пробел: 2
Площадь круга  12.566370614359172
pl@pl-desktop ~ $ python3 square.py 
Введите параметры через пробел: 4 5
Площадь прямоугольника  20.0
pl@pl-desktop ~ $ python3 square.py 
Введите параметры через пробел: 4 5 6
Площадь треугольника  9.921567416492215

ещё можно добавить sys.argv

добавить import sys
вынести split из функции
и изменить вызов. то есть, вот так:

import math, sys
 
def figure(a):
    if len(a) == 1:
        square = math.pi * a[0]**2
        print("Площадь круга ", square)
    elif len(a) == 2:
        square = a[0]*a[1]
        print("Площадь прямоугольника ", square)
    elif len(a) == 3:
        p = (a[0]+a[1]+a[2])/2
        square = math.sqrt(p * (p-a[0]) * (p-a[1]) * (p-a[2]))
        print("Площадь треугольника ", square)
 
param = sys.argv[1:] or input("Введите параметры через пробел: ").split()
figure([float(x) for x in param])

в этом случае параметры можно задавать как интерактивно, так и в строке запуска:

$ python3.4 t2.py 
Введите параметры через пробел: 3 4 5
Площадь треугольника  6.0
 
$ python3.4 t2.py 3 4 5
Площадь треугольника  6.0

Строка

А если ввели букву? Как это обработать и что бы программа предложила ввести заново числа???

def figure(a):

def figure(a):
    print('job')
 
while 1:
    try:
        param = input("Введите параметры через пробел: ").split()
        figure([float(x) for x in param])
        break
    except ValueError:
        continue

a = a.split() for i in

    a = a.split()
    for i in range(len(a)):
        a[i] = float(a[i])

проще:

    a = [float(x) for x in a.split()]