我目前正在为我的计算机科学入门课程编写一个简短的程序,尽管我很确定我的定义很明确,但我的代码返回“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 将返回。