[英]Python printing on same line for multiple line values
我有一个关于在同一行打印的问题。
我正在尝试执行以下操作:
我写的代码如下
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.