繁体   English   中英

Python 在同一行打印多行值

[英]Python printing on same line for multiple line values

我有一个关于在同一行打印的问题。

我正在尝试执行以下操作:

ascii 格式的示例输出

我写的代码如下

dic = {'1':'#\n#\n#\n#\n#',
       '2':'###\n  #\n###\n#\n###',
       '3':'###\n  #\n###\n  #\n###',
       '4':'# #\n# #\n###\n  #\n  #',
       '5':'###\n#\n###\n  #\n###',
       '6':'###\n#\n###\n# #\n###',
       '7':'###\n  #\n  #\n  #\n  #',
       '8':'###\n# #\n###\n# #\n###',
       '9':'###\n# #\n###\n  #\n###',
       '0':'###\n# #\n# #\n# #\n###'
}

value = input("Enter an integer: ")

value = str(value)

for chr in value:
    print(dic[chr], sep=' ')

但是当我运行它时使用我的代码,它会在单独的行中打印

在此处输入图像描述

你能帮我在同一行打印吗?

或者如果我的代码不正确,您能否建议如何正确编写它?

先感谢您!

首先编写一个 function combine ,将两个字符串组合成一行,通过在换行符上拆分两个字符串,找到第一个字符串的最长部分,然后使用它来确定填充:

def combine(a, b):
    a_lines = a.split("\n")
    b_lines = b.split("\n")
    padding = max(len(line) for line in a_lines)
    return "\n".join(a_line.ljust(padding) + " " + b_line for a_line, b_line in zip(a_lines, b_lines))

然后,只需使用它:

dic = {'1':'#\n#\n#\n#\n#',
       '2':'###\n  #\n###\n#\n###',
       '3':'###\n  #\n###\n  #\n###',
       '4':'# #\n# #\n###\n  #\n  #',
       '5':'###\n#\n###\n  #\n###',
       '6':'###\n#\n###\n# #\n###',
       '7':'###\n  #\n  #\n  #\n  #',
       '8':'###\n# #\n###\n# #\n###',
       '9':'###\n# #\n###\n  #\n###',
       '0':'###\n# #\n# #\n# #\n###'
}

value = input("Enter an integer: ")

value = str(value)

output = ""
for chr in value:
    if output:
        output = combine(output, dic[chr])
    else:
        # don't combine with nothing
        output = dic[chr]

print(output)

您的代码不正确。 您需要加入每个数字的第一行,然后是第二行,等等。

您可以使用zip()将数字的行放在一起,但为了适应这种情况,您需要转换dic以便每个数字在每行的单独单元中,如下所示:

{k: v.splitlines() for k, v in dic.items()}

您还需要固定间距,以便每个单元具有恒定的宽度。

完成后,将数字放在一起,zip,然后打印:

value = input("Enter an integer: ")

digits = [dic[c] for c in value]
for line in zip(*digits):
    print(*line)

这使用解包操作符(AKA “splat”)。

顺便说一句, str(input())是多余的,因为input()返回一个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM