盤點(diǎn)一道Python取整的基礎(chǔ)題目
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
大家好,我是Python進(jìn)階者。
一、前言
前幾天在小小明大佬的Python群里邊看到一個(gè)昵稱為【Big.白】的粉絲問了一道Python取整的基礎(chǔ)題目,后來拿到鉆石交流群?jiǎn)柫艘幌拢缦聢D所示。


二、實(shí)現(xiàn)過程
這是個(gè)基礎(chǔ)題目,看上去確實(shí)不難,關(guān)鍵是邏輯實(shí)現(xiàn)。一開始自己給了一個(gè)解答,如下所示:
def brf_cnt(consume_number):
if abs(consume_number) < 13:
return 1
elif 13 <= abs(consume_number) < 21:
return 2
else:
return consume_number // 10 + 1
if __name__ == '__main__':
consume_number = 33
print(brf_cnt(consume_number))
初步看沒啥問題,但是在輸入30的時(shí)候,小于31,應(yīng)該是3人,輸出卻是4,這樣的話,是存在問題的!需要進(jìn)行修改下。
后來【瑜亮老師】也給了一份代碼,思路是向上取整,如下所示:
import math
cl = math.ceil
nums = [10, 13, 20, 21, 30, 31, 33]
for i in nums:
if i < 13:
print(1)
else:
print(cl(i/10))
經(jīng)過測(cè)試,滿足題目要求。

后來【月神】也給了一個(gè)思路,也是可以實(shí)現(xiàn)的。

再之后,【Big.白】自己也給了一份代碼,思路是一致的,也是滿足要求的。
def money_people(x):
if x < 13:
return 1
else:
return (x - 1) // 10 + 1
print(money_people(20))

后來針對(duì)上面的這個(gè)代碼,還可以優(yōu)化下,成為三元運(yùn)算符,或者說三目表達(dá)式,如下所示:
def money_people(x):
return 1 if x < 13 else (x - 1) // 10 + 1

如果有遇到問題,隨時(shí)聯(lián)系我解決,歡迎加入我的Python學(xué)習(xí)交流群。
三、總結(jié)
大家好,我是Python進(jìn)階者。這篇文章主要盤點(diǎn)了一道Python基礎(chǔ)的問題,文中針對(duì)該問題給出了具體的解析和代碼實(shí)現(xiàn),幫助粉絲順利解決了問題。
最后感謝粉絲【Big.白】提問,感謝【瑜亮老師】、【月神】、【Big.白】給出的思路和代碼解析,感謝【dcpeng】、【Jason】、【產(chǎn)后修復(fù)恢復(fù)緊致】、【貓藥師Kelly】、【冫馬讠成】、【逸 】等人參與學(xué)習(xí)交流。
小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:
在xpath匹配li標(biāo)簽的時(shí)候跳過第一個(gè)li標(biāo)簽,匹配剩下的li標(biāo)簽表達(dá)式怎么寫?
盤點(diǎn)兩種使用Python網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)東方財(cái)富網(wǎng)分時(shí)數(shù)據(jù)抓取方法

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
