Python進行區間取值案例講解

2022-09-25 07:36:08 字數 2828 閱讀 1746

需求背景:

進行分值計算。如下圖,如果只是一兩個還好說,寫寫判斷,但是如果有幾十個,幾百個,會不會慘不忍睹。而且,下面的還是三種情況。

例如:解決:

# 根據值、比較list, 值list,返回區間值, other_value 即不在的情況

def get_valuwww.cppcns.come_by_between(self, compare_value, compare_list, value_list, other_value, type="compare", left=false,

right=true):

try:

if compare_value is none or compare_value == '':

return other_value

if len(compare_list) != len(value_list):

raise exception("區間對比兩個list長度不一致")

程式設計客棧 # # 如果比較的值和其它情況值一致,說明是其它情況

# if compare_value == other_value:

# return other_value

# 左邊開區間

if compare_list[0] == -9999999 and compare_list[1] >= compare_value:

return value_list[0]

# 右邊開區間

if right is true and compare_value > compare_list[len(compare_list) - 1]:

return value_list[len(compare_list) - 1]

# 左邊開區間

# if left is true and www.cppcns.comcompare_value <= compare_list[www.cppcns.com0]:

# return compare_value[0]

for ind, this_val in enumerate(compare_list):

# 如果是最後乙個,則返回最後乙個值

if compare_value > compare_list[len(compare_list) - 1]:

return value_list[len(compare_list) - 1]

# 返回預設的

elif (ind + 1) == len(compare_list):

return other_value

# 下乙個,如果大於compare_list長度減1 ,就返回最後乙個

next_val = compare_list[ind if ind >= len(compare_list) else ind + 1]

# 第乙個的話就是 大於等於,小於下乙個

if ind == 0 and compare_value >= this_val and compare_value <= next_val:

return value_list[ind]

# 大於左邊,小於等於右邊

elif this_val < compare_value and compare_value <= next_val:

return value_list[ind]

except:

log.error("根據區間計算分數異常", traceback.format_exc())

return other_value

# 數字型

def get_val_by_list(self, compare_value, compare_list, val_list, other_value):

try:

if compare_value is none:

return other_value

for ind, li in enumerate(compare_list):

if len(li) == 1 and compare_value == li[0]:

return val_list[ind]

# 最後乙個

elif len(li) == 1 and (ind + 1) == len(compare_list) and compare_value >= li[0]:

return val_list[ind]

elif len(li) == 2 and compare_value >= li[0] and compare_value <= li[1]:

return val_list[ind]

except:

log.error(" get_val_by_list 異常", traceback.format_exc())

return other_value

test

# credittime 即值

self.get_val_by_list(credittime, [[0],[1],[2],[3]], [20, 10, 0, -100],www.cppcns.com

other_value=0)

self.get_value_by_between(taxcreditrating, [0, 60, 70, 80, 90],[-200, 0, 10, 20, 30], other_value=0)

如果是圖2,即第三種情況,則需要多加乙個0,和對應的值。

self.get_value_by_between(taxamt12m, [0,0, 1000, 15000, 50000, 200000],[-50, -50, 0, 0, 5, 10], -0)

如果是負無窮大,則使用-999999

根據NABCD模型進行案例需求分析(例項講解)

根據nabcd模型進行案例需求分析 專案名稱 數學謎題闖關遊戲 1 n need 需求 隨著時代的發展,手機和電腦越來越普及,人們都需要手機和電腦來進行學習或娛樂,孩子們需要數學謎題闖關遊戲 數獨 數連 數回 來開發智力,成年人則可以用來鍛鍊自己的邏輯能力或打發時間放鬆心情。2 a approach...

python使用引數對巢狀字典進行取值的方法

因一些特殊需求需要以引數的形式獲取字典中特定的值,網上搜了一下並沒有特別好的實現 並沒有太認真去找 所以自己實現了乙個,以供大家參考 話不多說,直接上 def dict get dic,locators,default none param dic 輸入需要在其中取值的原始字典 param loca...

Python 案例002(獲取不同資料區間的和)

題目內容來自網路 加入了個人理解的過程 和點評 usr bin python coding utf 8 request 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部分,可提成7.5 ...