关于打印输出的格式 (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}
。
对于占位符中的符号d
或f
,自动执行从数字到字符串的转换,因此不使用str(some_number)
这里。
附录:
如果您有时间,请将编辑后的版本复制/粘贴为一个新问题,然后将此问题还原为原始状态,正如人们评论/回答您的原始问题一样。我会找到你的新问题并对我的答案做同样的事情。谢谢!
我一直在开发列出产品(及其成本和数量)的程序,它们分别存储在 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}
。
对于占位符中的符号d
或f
,自动执行从数字到字符串的转换,因此不使用str(some_number)
这里。
附录:
如果您有时间,请将编辑后的版本复制/粘贴为一个新问题,然后将此问题还原为原始状态,正如人们评论/回答您的原始问题一样。我会找到你的新问题并对我的答案做同样的事情。谢谢!