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
---- ------ ------ -----
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.