Почему моя функция возвращает None, когда я четко определил, что делать иначе? Это базовая c функция для расчета площади фигур - PullRequest
0 голосов
/ 18 апреля 2020

В настоящее время я пишу короткую программу для моего введения в курс по информатике, и мой код возвращает «нет», хотя я почти уверен, что мои определения ясны. Не обращайте внимания на громоздкие названия моих функций и прочего, это требование курса. Целью кода является возможность выбрать фигуру и затем напрямую ввести требуемую информацию без письменного приглашения, а затем программа вернет область выбранной фигуры. Последние несколько часов я ломал себе зубы, играя с этим, но мой код ничего не возвращает, независимо от того, что я делаю. Любой совет? Пожалуйста, воздержитесь от явного предоставления мне нового кода, потому что у меня могут возникнуть проблемы, просто, возможно, укажете мне направление моей проблемы.

import math

# the following functions are built to calculate each shape

def circle_area(rad):
    return math.pi*rad**2

def rectangle_area(side_one, side_two):
    return side_one*side_two

def triangle_area(edge):
    return (math.sqrt(3)/4)*(edge**2)

# the following function as assigned using the above functions

def shape_area():

    shape_choice = input("Choose shape (1=circle, 2=rectangle, 3=triangle):")

    if shape_choice == 1 or 3:
        length_one = input("")

    elif shape_choice == 2:
        length_two, length_three = input("")

    if shape_choice == 1:
        circle_area(length_one)

    elif shape_choice == 2:
        rectangle_area(length_two, length_three)

    elif shape_choice == 3:
        triangle_area(length_one)

    elif shape_choice != 1 or 2 or 3:
        return None

Я не уверен, почему весь мой код не попадает в поле серого цвета указанного кода c, но я надеюсь, что мой код более или менее понятен.

Ответы [ 2 ]

5 голосов
/ 18 апреля 2020

Вы не возвращаете значения площади, просто вычисляете их.

    if shape_choice == 1:
        return circle_area(length_one)

    elif shape_choice == 2:
        return rectangle_area(length_two, length_three)

    elif shape_choice == 3:
        return triangle_area(length_one)

Кроме того, как @NomadMonad также упоминает, утверждение:

if shape_choice == 1 or 3:

всегда истинно как 3 это вещь. Вместо этого используйте if shape_choice == 1 or shape_choice == 3:

Ваш окончательный elif может быть else, поскольку это конечное условие, которое может быть возвращено. Вы даже можете удалить его, так как python вернет None, если все равно ничего не будет возвращено.

1 голос
/ 18 апреля 2020

Эта строка

if shape_choice == 1 or 3

Всегда оценивается как True

Вы должны изменить его на

if shape_choice == 1 or shape_choice == 3

Аналогично

elif shape_choice != 1 or 2 or 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...