需求背景:
進行分值計算。如下圖,如果只是一兩個還好說,寫寫判斷,但是如果有幾十個,幾百個,會不會慘不忍睹。而且,下面的還是三種情況。
例如:解決:
# 根據值、比較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 ...