使用Python計(jì)算幾何形狀的表面積與體積
輸入一個(gè)表示幾何形狀名稱的字符串,再在一行內(nèi)輸入這種圖形的數(shù)據(jù),根據(jù)表示名稱的字符串選擇合適的公式計(jì)算幾何形狀的(表)面積和體積,若為二維圖形,只計(jì)算面積,若為三維圖形,計(jì)算其表面積與體積,結(jié)果嚴(yán)格保留2位小數(shù)。????????????????????????????????????????????????????????????????????????????????????????????????????????????????
模板程序給出了長(zhǎng)方形和長(zhǎng)方體的代碼,參考這些代碼,完成圓形、球、圓柱體、圓錐和正三棱柱這5種形狀的計(jì)算程序。????????????????????????????????????????????????????????????????????????????????????????????????????????????????
(可將模板中的代碼復(fù)制到本地,先注釋掉需要補(bǔ)充代碼的函數(shù)或在函數(shù)體中加pass語(yǔ)句后再運(yùn)行,調(diào)試完成后再?gòu)?fù)制粘到代碼框中)
示例 1????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入:
長(zhǎng)方形
4 8
輸出:
長(zhǎng)方形的面積為32.00
示例 2????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入:
長(zhǎng)方體
4 8 9
輸出:
長(zhǎng)方體的表面積為280.00, 體積為288.00
示例 3????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入:
圓形
88
輸出:
圓形的面積為24328.49
示例 4????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入:
球
88
輸出:
球的表面積為97313.97, 體積為2854543.24
示例5????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入:
圓柱體
88 88
輸出:
圓柱體的表面積為97313.97, 體積為2140907.43
示例 6????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入:
圓錐
88 88
輸出:
圓錐的表面積為58734.18, 體積為713635.81
示例 7????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入:
正三棱柱
88 88
輸出:
正三棱柱的表面積為29938.50, 體積為295086.03
import math
def type_judge(geom_type):
"""接收一個(gè)字符串為參數(shù),根據(jù)參數(shù)判斷幾何體類型
若輸入為二維圖形,計(jì)算其面積
若輸入為三維圖形,計(jì)算其面積與體積
根據(jù)類型調(diào)用不同的函數(shù)進(jìn)行運(yùn)算。
"""
if geom_type == '長(zhǎng)方形':
length, width = map(float, input().split()) # 空格分隔的輸入切分為列表并映射為浮點(diǎn)數(shù)
return square(length, width) # 調(diào)用函數(shù)計(jì)算長(zhǎng)方形面積
elif geom_type == '長(zhǎng)方體':
length, width, height = map(float, input().split()) # 空格分隔的輸入切分為列表并映射為浮點(diǎn)數(shù)
return cube(length, width, height) # 調(diào)用函數(shù)計(jì)算長(zhǎng)方體表面積與體積
elif geom_type == '圓形':
radius = float(input()) # 輸入轉(zhuǎn)為浮點(diǎn)數(shù)
return circle(radius) # 調(diào)用函數(shù)計(jì)算圓面積
elif geom_type == '球':
radius = float(input()) # 輸入轉(zhuǎn)為浮點(diǎn)數(shù)
return sphere(radius) # 調(diào)用函數(shù)計(jì)算球表面積與體積
elif geom_type == '圓柱體':
radius, height = map(float, input().split()) # 空格分隔的輸入切分為列表并映射為浮點(diǎn)數(shù)
return cylinder(radius, height) # 調(diào)用函數(shù)計(jì)算圓柱體表面積與體積
elif geom_type == '圓錐':
radius, height = map(float, input().split()) # 空格分隔的輸入切分為列表并映射為浮點(diǎn)數(shù)
return cone(radius, height) # 調(diào)用函數(shù)計(jì)算圓錐表面積與體積
elif geom_type == '正三棱柱':
side, height = map(float, input().split())
return tri_prism(side, height)
else:
return f'未找到{geom_type}計(jì)算方法'
def square(length, width):
"""計(jì)算長(zhǎng)方形的面積"""
area_of_square = length * width
return f'長(zhǎng)方形的面積為{area_of_square:.2f}'
def cube(length, width, height):
"""計(jì)算長(zhǎng)方體的表面積和體積"""
area_of_cube = length * width * 2 + width * height * 2 + length * height * 2
volume_of_cube = length * width * height
return f'長(zhǎng)方體的表面積為{area_of_cube:.2f}, 體積為{volume_of_cube:.2f}'
def circle(radius):
"""接收?qǐng)A的半徑,返回圓形的面積,圓周率用math.pi"""
area_of_circle = math.pi * math.pow(radius, 2)
return f'圓形的面積為{area_of_circle:.2f}'
def sphere(radius):
"""接收球的半徑,返回球的表面積和體積,圓周率用math.pi"""
area_of_sphere = 4*math.pi*math.pow(radius, 2)
volume_of_sphere = math.pi*math.pow(radius, 3)*4/3
return f'球的表面積為{area_of_sphere:.2f}, 體積為{volume_of_sphere:.2f}'
def cylinder(radius, height):
"""接收?qǐng)A柱體的底面半徑和高,返回圓柱體的表面積和體積,圓周率用math.pi"""
area_of_cylinder = 2*math.pi*radius*(radius+height)
volume_of_cylinder = math.pi*radius*radius*height
return f'圓柱體的表面積為{area_of_cylinder:.2f}, 體積為{volume_of_cylinder:.2f}'
def cone(radius, height):
"""接收?qǐng)A錐的底面半徑和高,返回圓錐的表面積和體積,圓周率用math.pi"""
area_of_cone = math.pi*radius * \
(radius+math.sqrt(math.pow(radius, 2)+math.pow(height, 2)))
volume_of_cone = math.pi*math.pow(radius, 2)*height/3
return f'圓錐的表面積為{area_of_cone:.2f}, 體積為{volume_of_cone:.2f}'
# 參考前面的方法自定義一個(gè)函數(shù)計(jì)算正三棱柱的表面積與體積,
# 函數(shù)名為tri_prism()
# 函數(shù)接受底邊長(zhǎng)和高兩個(gè)參數(shù)side, height
def tri_prism(side, height):
"""接收正三棱柱的底邊長(zhǎng)和高,返回正三棱柱的表面積和體積"""
area_of_tri_prism = math.sqrt(3)*math.pow(side, 2)/2+3*side*height
volume_of_tri_prism = math.sqrt(3)*math.pow(side, 2)*height/4
return f'正三棱柱的表面積為{area_of_tri_prism:.2f}, 體積為{volume_of_tri_prism:.2f}'
if __name__ == '__main__':
type_of_geometry = input() # 接收用戶輸入的字符串
geometry = type_judge(type_of_geometry) # 調(diào)用判斷圖形類型的函數(shù)
print(geometry) # 輸出函數(shù)運(yùn)行結(jié)果


這段代碼是一個(gè)簡(jiǎn)單的幾何體計(jì)算器。它通過(guò)接收用戶輸入的幾何體類型,然后根據(jù)不同的類型調(diào)用不同的函數(shù)進(jìn)行計(jì)算。
首先,定義了一個(gè) type_judge() 函數(shù),用于根據(jù)幾何體類型選擇相應(yīng)的函數(shù)進(jìn)行計(jì)算。其中,對(duì)于輸入為二維圖形的長(zhǎng)方形和圓形,調(diào)用 square() 和 circle() 函數(shù)計(jì)算其面積;對(duì)于輸入為三維圖形的長(zhǎng)方體、球、圓柱體、圓錐和正三棱柱,則調(diào)用 cube()、sphere()、cylinder()、cone() 和 tri_prism() 函數(shù)計(jì)算其表面積和體積。
接下來(lái),定義了各個(gè)幾何體的計(jì)算函數(shù),包括:
- square():計(jì)算長(zhǎng)方形的面積
- cube():計(jì)算長(zhǎng)方體的表面積和體積
- circle():計(jì)算圓形的面積
- sphere():計(jì)算球的表面積和體積
- cylinder():計(jì)算圓柱體的表面積和體積
- cone():計(jì)算圓錐的表面積和體積
- tri_prism():計(jì)算正三棱柱的表面積和體積
每個(gè)函數(shù)都接受一些參數(shù),進(jìn)行相應(yīng)的計(jì)算后返回一個(gè)字符串,包含計(jì)算結(jié)果并且精確到小數(shù)點(diǎn)后兩位。
最后,在主程序中,首先接收用戶輸入的幾何體類型,然后調(diào)用 type_judge() 函數(shù)進(jìn)行計(jì)算,并將計(jì)算結(jié)果打印出來(lái)
map() 是 Python 內(nèi)置的一個(gè)高階函數(shù),用于將一個(gè)可迭代對(duì)象中的每個(gè)元素都應(yīng)用到指定的函數(shù)上,并返回結(jié)果組成的迭代器。它的基本語(yǔ)法格式如下:
map(function, iterable, ...)
其中,function 是一個(gè)函數(shù),iterable 是一個(gè)可迭代對(duì)象,可以傳入多個(gè)可迭代對(duì)象,表示有多個(gè)參數(shù)需要傳入 function。map() 函數(shù)會(huì)依次將 iterable 中的每個(gè)元素傳入 function 中進(jìn)行處理,返回一個(gè)由處理結(jié)果組成的迭代器。
例如,對(duì)于一個(gè)列表中的每個(gè)元素求平方,可以使用以下代碼:
lst = [1, 2, 3, 4, 5] result = map(lambda x: x ** 2, lst) print(list(result)) # 輸出 [1, 4, 9, 16, 25]
這里使用了 lambda 表達(dá)式來(lái)定義一個(gè)簡(jiǎn)單的平方函數(shù),然后將 lst 列表中的每個(gè)元素都傳入該函數(shù)中進(jìn)行計(jì)算,并將結(jié)果組成一個(gè)迭代器,最后通過(guò) list() 函數(shù)將其轉(zhuǎn)換為列表并輸出。
map() 函數(shù)可以方便地應(yīng)用于很多場(chǎng)景,比如批量處理數(shù)據(jù)、映射函數(shù)等等。
A = map(float, input().split())
這段代碼將用戶通過(guò)輸入獲得的字符串按照空格進(jìn)行切分,然后使用 map() 函數(shù)將每個(gè)切分后的字符串都轉(zhuǎn)換為浮點(diǎn)數(shù)類型,并返回一個(gè)由浮點(diǎn)數(shù)組成的迭代器。最后,將這個(gè)迭代器賦值給變量 A。
具體來(lái)說(shuō),該代碼的執(zhí)行過(guò)程如下:
- input() 函數(shù)接收用戶輸入,并返回一個(gè)字符串類型的值。
- split() 方法將該字符串按照空格進(jìn)行切分,并返回一個(gè)由切分后的字符串組成的列表。
- map() 函數(shù)將該列表中的每個(gè)元素都應(yīng)用 float() 函數(shù)進(jìn)行轉(zhuǎn)換,并返回一個(gè)由轉(zhuǎn)換后的浮點(diǎn)數(shù)組成的迭代器。
- 將這個(gè)迭代器賦值給變量 A。
總結(jié)
到此這篇關(guān)于使用Python計(jì)算幾何形狀的表面積與體積的文章就介紹到這了,更多相關(guān)Python計(jì)算幾何形狀表面積內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)數(shù)據(jù)寫入excel表格
pycharm遠(yuǎn)程連接服務(wù)器運(yùn)行pytorch的過(guò)程詳解
keras 模型參數(shù),模型保存,中間結(jié)果輸出操作
Python新手入門之常用關(guān)鍵字的簡(jiǎn)單示例詳解

