python 实际问题(一)--- 实现LED字母打印
1 ## Created by YangJinfeng 2 3 def num_set(s): 4 """set the LED shapes to nums""" 5 6 a = [' ' + ' '*s + ' ', ' ' + '-'*s + ' '] 7 b = ['|'+' '*s+' ', ' '+' '*s +'|', '|'+' '*s+'|'] 8 9 zero = [a[1],b[2],a[0],b[2],a[1]] 10 one = [a[0],b[1],a[0],b[1],a[0]] 11 two = [a[1],b[1],a[1],b[0],a[1]] 12 thre = [a[1],b[1],a[1],b[1],a[1]] 13 four = [a[0],b[2],a[1],b[1],a[0]] 14 five = [a[1],b[0],a[1],b[1],a[1]] 15 six = [a[1],b[0],a[1],b[2],a[1]] 16 seve = [a[1],b[1],a[0],b[1],a[0]] 17 eigh = [a[1],b[2],a[1],b[2],a[1]] 18 nine = [a[1],b[2],a[1],b[1],a[1]] 19 20 return [zero, one, two, thre, four, five, six, seve, eigh, nine] 21 22 def num_get(s): 23 """get the LED nums list""" 24 return num_set(s) 25 26 def num_print(S,N): 27 """print the nums""" 28 nums = num_get(S) 29 try: 30 for i in range(5): 31 line = '' 32 for j in range(len(N)): 33 n = nums[int(N[j])] 34 line += n[i] + ' ' 35 if i % 2 == 1: 36 for t in range(S): 37 print line 38 else: 39 print line 40 except ValueError, e: 41 print e 42 43 def file_handle(f): 44 """handle the file, return the data_list""" 45 data_list = [] 46 try: 47 for line in file(f, 'r'): 48 data_list.append(line.split()) 49 finally: 50 file(f, 'r').close() 51 52 return data_list 53 54 if __name__ == "__main__": 55 56 ## content of ./tmp: 57 ## 58 ## 2 12345 59 ## 3 67890 60 for i in file_handle("./tmp"): 61 if not i: 62 continue 63 num_print(int(i[0]), i[1] 64
原问题:
把给定任意数字变成LCD的7段显示 输入: 输入文件包含多行,每个要显示的数占一行。每一行包含两个整数S和N。其中N是要显示的数(比如1234, 48384, 100000234)。S是显示的LCD图案的尺寸(S<10) 输出: 以LCD的样式print出输入文件指定的数。横线用'-'(减号)组成, 竖线用'|'(管道号)组成。 每一个数字刚好占据 S+2列, 2*S+3行。 数字之间用空列分割。 数之间用空行分割。 输入示例: 2 12345 3 67890 输出示例: -- -- -- | | | | | | | | | | | | -- -- -- -- | | | | | | | | | | -- -- -- --- --- --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- ---