我需要将邮政编码转换为点和横杠(条形码),但不知道怎么做
这是我目前的进展:
def encodeFive(zip):
zero = "||:::"
one = ":::||"
two = "::|:|"
three = "::||:"
four = ":|::|"
five = ":|:|:"
six = ":||::"
seven = "|:::|"
eight = "|::|:"
nine = "|:|::"
codeList = [zero,one,two,three,four,five,six,seven,eight,nine]
allCodes = zero+one+two+three+four+five+six+seven+eight+nine
code = ""
digits = str(zip)
for i in digits:
code = code + i
return code
通过这个,我可以得到原始的邮政编码,结果是一个字符串,但条形码里没有任何数字被编码。我已经弄明白了如何编码一个数字,但用五个数字就不行了。
7 个回答
1
我发现用split()来创建字符串列表更简单:
codes = "||::: :::|| ::|:| ::||: :|::| :|:|: :||:: |:::| |::|: |:|::".split()
def zipencode(numstr):
return ''.join(codes[int(x)] for x in str(numstr))
print zipencode("32345")
2
也许可以使用字典:
barcode = {'0':"||:::",
'1':":::||",
'2':"::|:|",
'3':"::||:",
'4':":|::|",
'5':":|:|:",
'6':":||::",
'7':"|:::|",
'8':"|::|:",
'9':"|:|::",
}
def encodeFive(zipcode):
return ''.join(barcode[n] for n in str(zipcode))
print(encodeFive(72353))
# |:::|::|:|::||::|:|:::||:
另外,最好不要把变量命名为 zip
,因为这样会覆盖掉 Python 自带的 内置函数 zip
. 同样,最好也避免把变量命名为 code
,因为 code
是标准库中的一个模块.
4
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会继续运行。
比如说,你可能想要在用户输入的数字大于10时,程序才进行某些计算。这样可以避免不必要的错误或无效的操作。
这就需要用到“条件语句”。条件语句就像是一个检查点,程序会在这里停下来,看看条件是否成立。如果成立,程序就会执行相应的代码;如果不成立,程序就会跳过这些代码,继续执行后面的部分。
通过使用条件语句,我们可以让程序更加灵活和智能,能够根据不同的情况做出不同的反应。
codeList = ["||:::", ":::||", "::|:|", "::||:", ":|::|",
":|:|:", ":||::", "|:::|", "|::|:", "|:|::" ]
barcode = "".join(codeList[int(digit)] for digit in str(zipcode))