class Exam:
def __init__(self):
pass
def SplitDigit4String(self, sour, lstDigit):
'''=============================================================================
Function : SplitDigit4String
Description : 把数字从字符串中分解出来
Input :
sour : 输入只有数字和分号的字符串,e.g. "1;3;5;7"
Output :
lstDigit : 数字列表,如果没有数字,则应该为空
Return :
Other :
============================================================================='''
#疑问:这里的为“空”是“空list->[]”还是为“None”,这里将两种情况全部考虑
temp_list = map(lambda x:int(x),sour.split(";"))
lstDigit = lstDigit and lstDigit.extend(temp_list) or temp_list
return lstDigit
def FilterDigit4List(self,lstDigit,notKeepOrder=False):
'''=============================================================================
Function : FilterDigit4List
Description : 按以下要求过滤出数字 ==>
:
: a. 剔除不在属于不在下列范围的数字:[975,1024]、[1,124]、[512,885]
: b. 剔除掉字符串中重复数字
Input/Output :
lstDigit : 存储数字的链表
Return :
Other :
notKeepOrder(增) : 是否保留list原有顺序,默认保留
============================================================================='''
if notKeepOrder:
#方案1:利用set的hash算法,不考虑list原有顺序
return list(set(lstDigit)-set(range(1,125))-set(range(512,886))-set(975,1025))
else:
#疑问:这里重复的数据剔除后保留的是哪一个,是最先一个?最后一个?这里保留最后一个
#方案2:保留list原有顺序
for i in lstDigit:
if (i>1 and i <124) or (i>512 and i <885) or (i>975 and i <1024) or lstDigit.count(i)>1:
lstDigit.remove(i)
return lstDigit
def IsInsulated(self,lstDigit):
'''=============================================================================
Function : IsInsulated
Description : 对数字的隔离度进行判断:4个数字的隔离(即绝对值)要求大于3
: e.g.“1;4;21;30;98;67”不满足要求,因为4-1=3,不大于3;
:“1;21;30,98,67,4”满足要求,因为以下组合都满足要求:
:“1;21;30,98” .......... 四个数字两两相隔都大于3
:“21;30,98,67”
:“30,98,67,4”
Input/Output :
lstDigit : 存储数字的链表
Return :
Other
============================================================================='''
for i in range(len(lstDigit)-3):
temp_list = lstDigit[i:i+4]
temp_list.sort()
for j in range(len(temp_list)-1)
if abs(temp_list[j]-temp_list[j+1]) <= 3:
return False
return True
def GetNeededDigits(self,lstDigit):
'''=============================================================================
Function : GetNeededDigits
Description : 连续4个数字的隔离(即绝对值)要求大于3如果不满足要求,需要进
: 行重新排列,直到找到符合要求的排列
Input/Output :
lstDigit : 存储数字的链表
Return : 如果能找到符合要求的链表则返回true,否则返回false
Other :
============================================================================='''
return True
题1 : 字符串的过滤和隔离度的判定
最新推荐文章于 2024-11-12 15:18:48 发布