七段数码管(seven-segment display)横向并排显示问题求助
七段数码管横向并排显示解决方案
你的问题核心是每个数字的字符串是按行打包的,直接print会让数字上下堆叠,而sep=" "只在print同时输出多个参数时生效,你每次只传了一个数字的完整字符串,所以sep不起作用。
解决思路
要实现横向并排,需要按行拼接所有数字的对应行,再逐行打印:
- 把每个数字的字符串按换行符拆分成单独的行列表;
- 遍历每一行位置,将所有数字的该行内容用空格拼接后打印。
修改后的代码
nums = { '0': "###\n" + "# #\n" * 3 + "###", '1': "#\n" * 5, '2': "###\n" + " #\n" + "###\n" + "# \n" + "###", '3': "###\n" + " #\n" + "###\n" + " #\n" + "###", '4': "# #\n" * 2 + "###\n" + " #\n" * 2, '5': "###\n" + "# \n" + "###\n" + " #\n" + "###", '6': "###\n" + "# \n" + "###\n" + "# #\n" + "###", '7': "###\n" + " #\n" * 4, '8': "###\n" + "# #\n" + "###\n" + "# #\n" + "###", '9': "###\n" + "# #\n" + "###\n" + " #\n" + " #" } def res(num_list): num_list = list(str(num_list)) try: # 将每个数字拆分为行的列表 digit_rows = [nums[digit].split('\n') for digit in num_list] # 逐行拼接所有数字的对应行并打印 for row in range(5): print(' '.join([digit[row] for digit in digit_rows])) except KeyError: print("Invalid numbers") res(12)
输出效果
# ### # # # ### # # # ###
关键说明
- 原代码中
print(nums[i], sep=" ")每次只输出一个数字的完整5行字符串,print默认追加换行,导致数字上下排列; - 修改后按行处理,把每个数字的第1行、第2行...分别拼接,实现横向并排。
内容的提问来源于stack exchange,提问作者Pancho
相关产品推荐
相关产品推荐

