简体   繁体   English

如何在不改变其结构的情况下并排打印项目列表?

[英]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.

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