Python練習(xí)-承壓計(jì)算
一、題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語(yǔ)句將所填結(jié)果輸出即可。
X 星球的高科技實(shí)驗(yàn)室中整齊地堆放著某批珍貴金屬原料。
每塊金屬原料的外形、尺寸完全一致,但重量不同。 金屬材料被嚴(yán)格地堆放成金字塔形。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 8? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7 8 8? ? ? ? ? ? ? ? ? ? ? ? ? ? 9 2 7 2? ? ? ? ? ? ? ? ? ? ? ? ? ?8 1 4 9 1? ? ? ? ? ? ? ? ? ? ? ? ? 8 1 8 8 4 1? ? ? ? ? ? ? ? ? ? ? ? ?7 9 6 1 4 5 4? ? ? ? ? ? ? ? ? ? ? ? 5 6 5 5 6 9 5 6? ? ? ? ? ? ? ? ? ? ? ?5 5 4 7 9 3 5 5 1? ? ? ? ? ? ? ? ? ? ? 7 5 7 9 7 4 7 3 3 1? ? ? ? ? ? ? ? ? ? ?4 6 4 5 5 8 8 3 2 4 3? ? ? ? ? ? ? ? ? ? 1 1 3 3 1 6 6 5 5 4 4 2? ? ? ? ? ? ? ? ? ?9 9 9 2 1 9 1 9 2 9 5 7 9? ? ? ? ? ? ? ? ? 4 3 3 7 7 9 3 6 1 3 8 8 3 7? ? ? ? ? ? ? ? ?3 6 8 1 5 3 9 5 8 3 8 1 8 3 3? ? ? ? ? ? ? ? 8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9? ? ? ? ? ? ? ?8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4? ? ? ? ? ? ? 2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9? ? ? ? ? ? ?7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6? ? ? ? ? ? 9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3? ? ? ? ? ?5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9? ? ? ? ? 6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4? ? ? ? ?2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4? ? ? ? 7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6? ? ? ?1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3? ? ? 2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8? ? ?7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9? ? 7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6? ?5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1? X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X?
其中的數(shù)字代表金屬塊的重量(計(jì)量單位較大)。 最下一層的 XX 代表 3030 臺(tái)極高精度的電子秤。
假設(shè)每塊原料的重量都十分精確地平均落在下方的兩個(gè)金屬塊上, 最后,所有的金屬塊的重量都嚴(yán)格精確地平分落在最底層的電子秤上。
電子秤的計(jì)量單位很小,所以顯示的數(shù)字很大。
工作人員發(fā)現(xiàn),其中讀數(shù)最小的電子秤的示數(shù)為:20864582312086458231
請(qǐng)你推算出:讀數(shù)最大的電子秤的示數(shù)為多少?
運(yùn)行限制:
- 最大運(yùn)行時(shí)間:1s
- 最大運(yùn)行內(nèi)存: 128M
二、解題思路
- 將金字塔以字符串形式放入源碼中
- 創(chuàng)建一個(gè)雙重列表,將所有的元素按列存儲(chǔ)在不同的列表中,然后所有的列表再分別作為一個(gè)元素存儲(chǔ)在一個(gè)大的列表中。
list =[[int(i) for i in j.split()] for j in a.split('\n')]
- 分別遍歷每一個(gè)小列表中的每一個(gè)元素,將其下一列的元素的總重量依次算出:
list[i+1][j] += list[i][j]/2 list[i+1][j+1] += list[i][j]/2
遍歷結(jié)束后此時(shí)最后一行的元素便是各個(gè)的總重量,用min()
和max()
函數(shù)求出其值的大小。
num1 = min(list[-1]) num2 = max(list[-1])
最后轉(zhuǎn)化輸出得出結(jié)果(2086458231/num1)*num2
,但是有除法在的結(jié)果肯定是會(huì)含有小數(shù)的,此時(shí)可以通過(guò)int來(lái)強(qiáng)制變?yōu)檎麛?shù),這樣比較簡(jiǎn)單。也可以采用格式字符串的方法進(jìn)行輸出,但是前提是需要將結(jié)果變?yōu)?code>float浮點(diǎn)數(shù)類(lèi)型
三、源碼分享
# @File ? ?: 承壓計(jì)算.py a=''' ? ? ? ? ? ? ? ? ? ? ? ?7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5 8? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7 8 8? ? ? ? ? ? ? ? ? ? ? ? ? ? 9 2 7 2? ? ? ? ? ? ? ? ? ? ? ? ? ?8 1 4 9 1? ? ? ? ? ? ? ? ? ? ? ? ? 8 1 8 8 4 1? ? ? ? ? ? ? ? ? ? ? ? ?7 9 6 1 4 5 4? ? ? ? ? ? ? ? ? ? ? ? 5 6 5 5 6 9 5 6? ? ? ? ? ? ? ? ? ? ? ?5 5 4 7 9 3 5 5 1? ? ? ? ? ? ? ? ? ? ? 7 5 7 9 7 4 7 3 3 1? ? ? ? ? ? ? ? ? ? ?4 6 4 5 5 8 8 3 2 4 3? ? ? ? ? ? ? ? ? ? 1 1 3 3 1 6 6 5 5 4 4 2? ? ? ? ? ? ? ? ? ?9 9 9 2 1 9 1 9 2 9 5 7 9? ? ? ? ? ? ? ? ? 4 3 3 7 7 9 3 6 1 3 8 8 3 7? ? ? ? ? ? ? ? ?3 6 8 1 5 3 9 5 8 3 8 1 8 3 3? ? ? ? ? ? ? ? 8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9? ? ? ? ? ? ? ?8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4? ? ? ? ? ? ? 2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9? ? ? ? ? ? ?7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6? ? ? ? ? ? 9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3? ? ? ? ? ?5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9? ? ? ? ? 6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4? ? ? ? ?2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4? ? ? ? 7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6? ? ? ?1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3? ? ? 2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8? ? ?7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9? ? 7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6? ?5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1? 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ''' list =[[int(i) for i in j.split()] for j in a.split('\n')] for i in range(len(list[-1])-1): ? ? for j in range(len(list[i])): ? ? ? ? list[i+1][j] += list[i][j]/2 ? ? ? ? list[i+1][j+1] += list[i][j]/2 num1 = min(list[-1]) num2 = max(list[-1]) # print('%.0f'%float((2086458231/num1)*num2)) print(int((2086458231/num1)*num2))
四、學(xué)習(xí)總結(jié)
- 1. 創(chuàng)建雙列表的方法:
list =[[int(i) for i in j.split()] for j in a.split('\n')]
- 2.格式化字符串方法:
'%.0f'%float((2086458231/num1)*num2)
,要先轉(zhuǎn)化為浮點(diǎn)數(shù)類(lèi)型。
到此這篇關(guān)于Python練習(xí)-承壓計(jì)算的文章就介紹到這了,更多相關(guān)Python承壓計(jì)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python實(shí)現(xiàn)給企業(yè)微信發(fā)送消息功能
本文將介紹如何使用python3給企業(yè)微信發(fā)送消息,文中有詳細(xì)的圖文解說(shuō)及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下2021-12-12Python利用format函數(shù)實(shí)現(xiàn)對(duì)齊打印(左對(duì)齊、右對(duì)齊與居中對(duì)齊)
format是字符串內(nèi)嵌的一個(gè)方法,用于格式化字符串,下面這篇文章主要給大家介紹了關(guān)于Python利用format函數(shù)實(shí)現(xiàn)對(duì)齊打印(左對(duì)齊、右對(duì)齊與居中對(duì)齊)的相關(guān)資料,需要的朋友可以參考下2022-04-04Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼
這篇文章主要介紹了Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12python實(shí)現(xiàn)canny邊緣檢測(cè)
本文主要講解了canny邊緣檢測(cè)原理:計(jì)算梯度幅值和方向、根據(jù)角度對(duì)幅值進(jìn)行非極大值抑制、用雙閾值算法檢測(cè)和連接邊緣以及python 實(shí)現(xiàn)2020-09-09Python利用shutil模塊實(shí)現(xiàn)文件的裁剪與壓縮
shutil可以簡(jiǎn)單地理解為sh+util ,shell工具的意思。shutil模塊是對(duì)os模塊的補(bǔ)充,主要針對(duì)文件的拷貝、刪除、移動(dòng)、壓縮和解壓操作。本文將利用這一模塊實(shí)現(xiàn)文件的裁剪、壓縮與解壓縮,需要的可以參考一下2022-05-05python編程學(xué)習(xí)使用管道Pipe編寫(xiě)優(yōu)化代碼
大家好,今天這篇文章我將詳細(xì)講解 Pipe 如何讓你的代碼更加簡(jiǎn)潔的方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11