是的,你应该消除混乱的根源.因为如果可以犯错误,有人会做出错误.很容易将0与O和I混淆为l或1 - 因此不应同时使用它们.那很容易 - 因为你不会使用3个字符(i,L和o),只需得到36-3中的数字= 33并转换
SKU.replace('I','X').replace('L','Y').replace('O','Z')
Run Code Online (Sandbox Code Playgroud)
反过来,当给出这样的代码并且在做int之前(SKU,33),你将不得不将XYZ返回到令人困惑的字符.在此之前,如果 - 如预期的那样 - 你错误地给出了L或I,则替换为1,如果给定O,则替换为0.例如,使用SKU.translate()
string.maketrans('LIOXYZ','110IL0')