<p>这里有一个方法可以做到这一点。您可以只遍历输入的字符,而不是使用递归来解决这个问题。如果少于5个字符,您可以立即<code>return None</code>,因为邮政编码输入错误。然后我们将遍历每个字符并将条形码添加到列表中。你知道吗</p>
<p>最后我们检查列表的长度是否是25,这意味着我们确实有5个数字,如果有任何字母或特殊字符,它们将被忽略。你知道吗</p>
<pre><code>def printDigit(d):
if len(str(d)) == 5 and str(d).isdigit():
temp = []
for i in str(d):
if i == '0': temp.extend("||:::")
elif i == '1': temp.extend(":::||")
elif i == '2': temp.extend("::|:|")
elif i == '3': temp.extend("::||:")
elif i == '4': temp.extend(":|::|")
elif i == '5': temp.extend(":|:|:")
elif i == '6': temp.extend(":||:|")
elif i == '7': temp.extend("|:::|")
elif i == '8': temp.extend("|::|:")
elif i == '9': temp.extend("|:|::")
return ''.join(temp)
else: return None
zipCode = str(input("Input a zip code: "))
print(printDigit(zipCode))
</code></pre>
<hr/>
<p>避免重写代码段。我们还可以使用字典保存每个数字到其条形码值的翻译。然后我们可以使用列表理解作为</p>
<pre><code>def printDigit(d):
dic = {'0': "||:::", '1': "||:::", '2': "::|:|",
'3': "::||:", '4': ":|::|", '5': ":|:|:",
'6': ":||:|", '7': "|:::|", '8': "|::|:",
'9': "|:|::"}
if len(str(d)) == 5 and str(d).isdigit():
return ''.join([dic[i] for i in str(d)])
else: return None
zipCode = str(input("Input a zip code: "))
print(printDigit(zipCode))
</code></pre>