[英]How can I print a list of items side by side without changing its structure?
def arithmetic_arranger(my_List):
my_print_list = list()
for number in my_List:
number = number.split(' ')
if len(number[0]) > len(number[2]) or len(number[0]) == len(number[2]):
my_max = len(number[0]) + 2
else:
my_max = len(number[2]) + 2
spaces_Number = str(abs(int(len(str(number[0])) - len(str(number[2])))) * ' ')
if len(str(number[0])) < len(str(number[2])):
my_str_1 = str(spaces_Number+' '+number[0]+'\n'+number[1]+' '+number[2]+'\n'+my_max * '_')
my_print_list.append(my_str_1)
else:
my_str_2 = str(' '+number[0]+'\n'+number[1]+' '+spaces_Number+number[2]+'\n'+my_max * '_')
my_print_list.append(my_str_2)
for item in my_print_list:
print(item)
arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"])
output:输出:
32
+ 8
____
1
- 3801
______
9999
+ 9999
______
523
- 49
_____
desirable output:理想的输出:
32 1 9999 523
+ 8 - 3801 + 9999 - 49
---- ------ ------ -----
I tried everything on the internet but every method I tried, changed the structure of output.我在互联网上尝试了所有方法,但我尝试的每一种方法都改变了输出的结构。 Thanks for help people.
感谢帮助的人。
Try:尝试:
def arithmetic_arranger(vals):
tmp = []
for v in vals:
n1, op, n2 = v.split()
max_num = len(max(n1, n2, key=len))
tmp.append(
"{}\n{} {}\n{}".format(
f"{{:>{max_num+2}}}".format(n1),
op,
f"{{:>{max_num}}}".format(n2),
"-" * (max_num + 2),
).splitlines()
)
print("\n".join(" ".join(line) for line in zip(*tmp)))
arithmetic_arranger(["32 + 8", "1 - 3801", "9999 + 9999", "523 - 49"])
Prints:印刷:
32 1 9999 523
+ 8 - 3801 + 9999 - 49
---- ------ ------ -----
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.