如何为加法方程式正确设置我的数字格式

How do I format my numbers correctly for an addition equation

好的,所以我正在尝试制作一个实现 main() 函数的程序,以便在调用时生成一个随机加法方程,使用最多 3 位数字。这是我目前所拥有的:

def main():
    
    import random

# Generating random 3 digit number
    num1 = random.randint(1,1000)
    num2 = random.randint(1,1000)

#Displying the three digit numbers
    print(" ",num1)
    print("+",num2)


    answer = num1 + num2
    user_answer = int(input("Enter sum of numbers: "))
    if user_answer == answer:
        print("Correct answer - Good Work!")
    else:
        print("Incorrect... The Correct answer is:", + answer)
main()

我遇到的问题是生成的数字的格式。由于它们是随机的,您可以生成类似 375 + 67 的结果,这将使输出如下所示:

  375
+ 67
Enter sum of numbers: 

这里的直接问题是没有对齐到正确的地方,所以很难做加法。我希望它像这样在正确的位置对齐:

  375
+  67
Enter sum of numbers: 

格式函数中是否有一个参数可以让我使用空白 space(如“ ”)正确对齐它?

尝试 right-aligning 使用字符串格式的输出。一般语法为 f"{yourValue:>width}".

print(f"{num1:>2}")
print(f"+ {num2:>2}")

如果您希望方程式的总宽度基于“最宽”数字动态变化:

a, b = random.sample(range(1, 1001), k=2)
ans = a + b

a, b = map(str, (a, b))
w = max(map(len, (a, b)))

print("{}\n+ {}".format(a.rjust(w + 2), b.rjust(w)))

在上面的代码片段中,w + 2 说明了加号产生的额外 space 和它右边的一个白色 space,它将始终出现在底部行:'+ '.

一些示例输出:

  196
+ 301

  7
+ 9

  1000
+  598

  1000
+ 1000

  487
+  76

    7
+ 676

如果您想要固定宽度,那么无论“最宽”数字中有多少位,所有方程式的宽度都相同:

a, b = random.sample(range(1, 1001), k=2)
ans = a + b

a, b = map(str, (a, b))
w = 4  # 4 digits in 1000, the max

print("{}\n+ {}".format(a.rjust(w + 2), b.rjust(w)))

输出:

   196
+  301

     4
+    8

  1000
+  598

  1000
+ 1000

   478
+   76

     7
+  682