@staticmethod
def convertNumericWellPosToA1Style(numericPos, contRows, contCols, colOrRowMajor, padWithZeros):
"""
Convert a numeric position to an A1 style position.
Parameters
numericPos : int
Numeric well position to be converted.
contMaxRows : int
Max number of container rows.
contMaxCols : int
Max number of container cols.
colOrRowMajor : str
'col' or 'row' for column or row major addressing.
padWithZeros : bool
Whether to pad the numeric portion returned, with zeros or not.
i.e., A1 or A01
"""
if numericPos < 1:
raise ValueError("Container position value '" + str(numericPos) + "' must be 1 or greater.")
if contCols < 1:
raise ValueError("Container columns value '" + str(contCols) + "' must be 1 or greater.")
if contRows < 1:
raise ValueError("Container rows value '" + str(contRows) + "' must be 1 or greater.")
if numericPos > contCols * contRows:
raise ValueError("Container position value '" + str(numericPos) + "' exceeds the maximum container wells possible of '" + str(contCols * contRows) + "'.")
if colOrRowMajor == "row":
if padWithZeros:
return 'ABCDEFGH'[(numericPos - 1) // contCols] + '%02d' % ((numericPos - 1) % contCols + 1,)
else:
return 'ABCDEFGH'[(numericPos - 1) // contCols] + str((numericPos - 1) % contCols + 1)
elif colOrRowMajor == "col":
if padWithZeros:
return 'ABCDEFGH'[(numericPos - 1) % contRows] + '%02d' % (math.ceil(numericPos / contRows),)
else:
return 'ABCDEFGH'[(numericPos - 1) % contRows] + str(math.ceil(numericPos / contRows))
else:
raise ValueError("Container traversal value '" + colOrRowMajor + "' must be 'col' or 'row'.")
把艾布拉姆斯的回答再往前走几步。以下是两种方法:
@staticmethod def convertNumericWellPosToA1Style(numericPos, contRows, contCols, colOrRowMajor, padWithZeros): """ Convert a numeric position to an A1 style position. Parameters numericPos : int Numeric well position to be converted. contMaxRows : int Max number of container rows. contMaxCols : int Max number of container cols. colOrRowMajor : str 'col' or 'row' for column or row major addressing. padWithZeros : bool Whether to pad the numeric portion returned, with zeros or not. i.e., A1 or A01 """ if numericPos < 1: raise ValueError("Container position value '" + str(numericPos) + "' must be 1 or greater.") if contCols < 1: raise ValueError("Container columns value '" + str(contCols) + "' must be 1 or greater.") if contRows < 1: raise ValueError("Container rows value '" + str(contRows) + "' must be 1 or greater.") if numericPos > contCols * contRows: raise ValueError("Container position value '" + str(numericPos) + "' exceeds the maximum container wells possible of '" + str(contCols * contRows) + "'.") if colOrRowMajor == "row": if padWithZeros: return 'ABCDEFGH'[(numericPos - 1) // contCols] + '%02d' % ((numericPos - 1) % contCols + 1,) else: return 'ABCDEFGH'[(numericPos - 1) // contCols] + str((numericPos - 1) % contCols + 1) elif colOrRowMajor == "col": if padWithZeros: return 'ABCDEFGH'[(numericPos - 1) % contRows] + '%02d' % (math.ceil(numericPos / contRows),) else: return 'ABCDEFGH'[(numericPos - 1) % contRows] + str(math.ceil(numericPos / contRows)) else: raise ValueError("Container traversal value '" + colOrRowMajor + "' must be 'col' or 'row'.")
@静态方法 def ConvertA1StylePositionToNumeric(A1StylePos:str,contRows:int,contCols:int,colOrRowMajor:str): #至少检查两个字符 如果len(A1StylePos)==0: raise ValueError(“无法转换空的A1样式井位置。”) 如果len(A1StylePos)==1: raise VALUERROR(“A1样式井位至少需要2个字符。”) #大写字母 A1StylePos=A1StylePos.上部() colPart=0 #获取A1型机架位置的部件 行部件=A1StylePos.上部()[0:1] 如果ord(行部件)<;65或ord(行部件)>;90: raise ValueError(“A1样式井位置的第一个字符必须是字母a-Z.”) colPartAsString=A1StylePos[1:长度(A1StylePos)] 如果colPartAsString.isdigit(): colPart=int(colPartAsString) 其他: raise ValueError(“井位第一个字符后面的字符必须是数字。”) #错误检查 如果ord(A1StylePos[0])<;65或ord(A1StylePos[0])>;90: raise ValueError(“井位的第一个字符''+A1StylePos+”'必须是字符a到Z.) 如果是contCols<;1: raise ValueError(“Container columns value'”+str(contCols)+“必须是1或更大。”) 如果控制<;1: raise ValueError(“Container rows value'”+str(contRows)+“'必须是1或更大。”) 如果控制>;26: raise ValueError(“Container rows value'”+str(contRows)+“'不得大于26。”) 如果colPart>;contCols: raise ValueError(“井位值”'+A1StylePos+“'超过了'+str(contCols)+“'.”可能的最大容器列数) 如果colPart<;1: raise ValueError(“井位值”'+A1StylePos+“'必须大于等于1。”) 如果(ord(行部件)-64)>;控制: raise ValueError(“井位值”'+A1StylePos+“'指的是超出了容器列最大值''+str(contCols)+“'.”的井) #转换 如果colOrRowMajor==“col”: return(int)(((colPart-1)*contRows)+(ord(rowPart)-64)) elif colOrRowMajor==“行”: return(int)((ord(rowPart)-65)*contCols)+colPart; 其他: raise ValueError(“Container traversal value'”+colOrRowMajor+“'必须是'col'或'row'”)
哦,当然,去把它做成1基为什么你不。。。在
相关问题 更多 >
编程相关推荐