擅长:python、mysql、java
<p>有趣的问题。我注意到你作为一个C风格的程序员解决了这个问题。我猜你的背景是C/C++。我想提供一种更像Python的方式:</p>
<pre><code>def printBarCode(zip_code):
digit_dict = {1:'...!!',2:'..!.!',3:'..!!.',4:'.!..!',5:'.!.!.',
6:'.!!..',7:'!...!',8:'!..!.',9:'!.!..',0:'!!...'}
zip_code_list = [int(num) for num in str(zip_code)]
bar_code = ' '.join([digit_dict[num] for num in zip_code_list])
check_code = digit_dict[10 - sum(zip_code_list) % 10]
return '!{} {}!'.format(bar_code, check_code)
print printBarCode(95014)
</code></pre>
<p>我使用列表理解来处理每个数字,而不是迭代。我本可以使用map()函数使其更具可读性,但列表理解更像python。另外,我使用python3.x格式进行字符串格式化。输出如下:</p>
^{pr2}$