关于打印输出的格式 (python)

Regarding formatting of printed outputs (python)

我一直在开发列出产品(及其成本和数量)的程序,它们分别存储在 3 个不同的列表中。

但是,我不知道该怎么做,对齐打印输出

while valid ==1 :
    if user_choice == 's':
        user_product = str(input("Enter a product name: "))
        valid = 2
    elif user_choice == 'l':
        print ("Product" + "     " + "Quantity" +"     "+ "Cost")
        c = 0
        while c < len(product_names):
            print (product_names[c] + "    " + str(product_costs[c]) + "     "+ str(quantity[c]))
            c +=1
            valid = 0
        break
        valid = 0

所以基本上我不确定如何在第 6 行和 第 9 行对齐在一起,因为我会得到一个杂乱无章的输出,因为产品名称的长度不同,成本和数量的长度也不同。 谁能教我如何真正正确地对齐它们,以便它们可能 看起来像 table?

非常感谢!

这是你想要的,完全按照规定的顺序

n = -1                                 # Intentionally an incorrect value

# Ask user for the number while he/she doesn't enter a correct one

while n < 10:
    n = int(input("Enter an integer number greater or equal 10: "))


# Preparation for Sieve of Eratosthenes

flags_list = ["P"]                     # 1st value
flags_list = flags_list * (n + 1)      # (n + 1) values

flags_list[0] = "N"                    # 0 is not a prime number
flags_list[1] = "N"                    # 1 is not a prime number, too


# Executing Sieve of Eratosthenes

for i in range(2, n + 1):
    if flags_list[i] == "P":
        for j in range(2 * i, n + 1, i):
            flags_list[j] = "N"


# Creating the list of primes from the flags_list

primes = []                            # Empty list for adding primes into it

for i in range(0, n + 1):
    if flags_list[i] == "P":
        primes.append(i)


# Printing the list of primes

i = 0                                  # We will count from 0 to 9 for every printed row
print()

for prime in primes:
    if i < 10:
        print("{0:5d}".format(prime), end="")
        i = i + 1
    else:
        print()                        # New line after the last (10th) number
        i = 0

=========== 你编辑的答案,完全是其他问题:===========

===========(请不要这样做,而是创建一个 new 问题。)========= ==

替换这部分代码:

print ("Product" + "     " + "Quantity" +"     "+ "Cost")
c = 0
while c < len(product_names):
    print (product_names[c] + "    " + str(product_costs[c]) + "     "+ str(quantity[c]))
    c +=1

这样(使用 原始缩进 ,因为它在 Python 中很重要):

print("{:15s} {:>15s} {:>15s}".format("Product", "Quantity", "Cost"))

for c in range(0, len(product_names)):
    print("{:15s} {:15d} {:15d}".format(product_names[c], quantity[c], product_costs[c]))

(我在第二个 print 中将您的订单更改为 名称、数量、成本 - 与您的第一个 print 相对应。)

您可能希望将 15 更改为其他数字(甚至单独更改,例如更改为 12 9 6)但是 三元组第一个 print 中的数字 必须与第二个 print() 中的相同。

解释:

{: }.format() 方法中 print 语句中列出的各个字符串/整数的占位符。

占位符中的数字表示为适当值保留的长度。

可选的 > 表示输出在保留的 space 中 对齐,因为文本的默认对齐方式是 到左边,数字右边。 (是的,< 表示 对齐和 ^ 居中。)

占位符中的字母对于字符串表示 s,对于整数表示 d(如 "decimal")- 也可能是 f(如 "float") 对于带有小数点的数字 - 在这种情况下,输出中 2 个小数位(来自保留的 15)将是 {:15.2f}

对于占位符中的符号df自动执行从数字到字符串的转换,因此不使用str(some_number)这里。

附录:

如果您有时间,请将编辑后的版本复制/粘贴为一个新问题,然后将此问题还原为原始状态,正如人们评论/回答您的原始问题一样。我会找到你的新问题并对我的答案做同样的事情。谢谢!