Когда вы пишете:
if shape == square():
, вызывается функция square
, которая рисует квадрат. Затем он сравнивает входные данные пользователя с возвращаемым значением. Поскольку функция ничего не возвращает, сравнение завершается неудачей.
Вы делаете это для всех фигур, и в итоге получается рисование всех фигур.
Вы должны сравнить входные данные пользователя сстрока, не вызывающая функции.
if shape == "square":
Вы также не должны использовать print()
вокруг вызовов функций формы, так как они не возвращают ничего, что должно быть напечатано. Таким образом, это должно быть так:
if shape == "square":
square()
elif shape == "triangle":
triangle()
...
else:
print("shape is not valid, please input a valid one!")
Вместо всех операторов if
, более разумным способом было бы использовать словарь, который отображает имена фигур в функции:
shape_map = {"square": square, "triangle": triangle, "pentagon": pentagon, ...}
if shape in shape_map:
shape_map[shape]()
else:
print("shape is not valid, please input a valid one!")