为什么我的函数在我明确定义它做其他事情时返回 None ?这是计算形状面积的基本函数

0 python math python-3.x

我目前正在为我的计算机科学入门课程编写一个简短的程序,尽管我很确定我的定义很明确,但我的代码返回“none”。不要介意我的函数和东西的笨重命名,这是课程要求。代码的目的是可以选择一个形状,然后直接输入需要的信息,不需要书面提示,然后程序会返回选择的形状的面积。在过去的几个小时里,我一直在为此折腾,玩弄它,但无论我做什么,我的代码都没有返回。有什么建议吗?请不要公然给我新代码,因为我可能会因此而惹上麻烦,也许只是指出我的问题方向。

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
Run Code Online (Sandbox Code Playgroud)

我不确定为什么我的所有代码都没有进入特定的代码灰色框,但我希望我的代码或多或少清晰。

小智 5

您没有返回面积值,只是计算它们。

    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)
Run Code Online (Sandbox Code Playgroud)

此外,正如@NomadMonad 还提到的,声明:

if shape_choice == 1 or 3:
Run Code Online (Sandbox Code Playgroud)

永远是真实3的。而是使用if shape_choice == 1 or shape_choice == 3:

您的 finalelif可以是 an,else因为它是可以返回的最终条件。您甚至可以将其删除,因为None如果无论如何都没有返回,python 将返回。