You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

七段数码管(seven-segment display)横向并排显示问题求助

七段数码管横向并排显示解决方案

你的问题核心是每个数字的字符串是按行打包的,直接print会让数字上下堆叠,而sep=" "只在print同时输出多个参数时生效,你每次只传了一个数字的完整字符串,所以sep不起作用。

解决思路

要实现横向并排,需要按行拼接所有数字的对应行,再逐行打印:

  1. 把每个数字的字符串按换行符拆分成单独的行列表;
  2. 遍历每一行位置,将所有数字的该行内容用空格拼接后打印。

修改后的代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:33:25