我有一个记事本,里面装满了不同的材料,我被要求把它们分类成一个用户友好的可读语句。在
例如,如果我的material_list
包含['Wool', 'Cotton']
,它将输出'Wool & Cotton'
但是如果我的material_list包含['Wool', 'Aloe', 'Fiber']
,它将输出'Wool & Aloe Fiber'
。在
我实现了这一点,有时我有'Silk'
,但如果我的列表中有'Bamboo'
和{'Bamboo Silk'
。在
当我有['Bamboo','Banana','Silk']
时,我不必担心这个案子。在
# List of all Materials
materials = [
'Aloe', 'Alpaca', 'Bamboo', 'Banana', 'Cotton',
'Cowhide', 'Fiber', 'Hemp', 'Jute', 'Lambskin',
'Leather', 'Linen', 'Paper', 'Polyester', 'Polypropylene',
'Seagrass', 'Shearling', 'Sheepskin', 'Silk', 'Sisal',
'Tencel', 'Viscose', 'Wool' , 'Yard'
]
def FindMaterial(toPrint,database):
material_list = []
for x in range (0,len(database)):
if database[x].lower() in toPrint.lower():
material_list.append(database[x])
#Special cases for certain combinations of materials
def SpecialCases(mat1,mat2):
if mat1 and mat2 in material_list:
material_list.remove(mat1)
material_list.remove(mat2)
material_list.append(mat1+' '+mat2)
SpecialCases('Aloe','Fiber')
SpecialCases('Bamboo','Silk')
SpecialCases('Banana','Silk')
SpecialCases('Wool','Sisal')
if len(material_list) == 1:
material_string = (material_list[0])
else:
material_string = (material_list[0]+' & '+material_list[1])
return material_string
FindMaterial(sample_input,materials)
类似sample_input = ['Silk']
的内容导致ValueError: list.index(x): x not in list
行上的错误material_list.remove(mat1)
'Wool'
没有产生错误。我知道'Fiber'
单独或{'Silk'
可以。在
如果你想确定mat1和mat2是否都在material_列表中,我想你有个bug。试试看
^{pr2}$相关问题 更多 >
编程相关推荐