如何让句点显示在索引号后面?

How do I get periods to display behind the index numbers?

我正在为学校做一个项目。我能够让我的功能按照我需要的方式工作,使用老师想要的所有参数,除了它显示的时候。我需要它从两个列表中拉出,它确实如此,并将两个列表并排显示,它确实如此。然而在老师的版本中,display/output 看起来像这样:

0.  (.39)   Drip coffee
1.  (.59)   Hot chocolate
2.  (.79)   Caffe Latte
3.  (.49)   Bagel
4.  (.69)   Blueberry muffin
5.  (.39)   Chocolate chip cookie

6. Reset order
7. Checkout

然而,我的版本是这样的:

0  (.39)   Drip coffee
1  (.59)   Hot chocolate
2  (.79)   Caffe Latte
3  (.49)   Bagel
4  (.69)   Blueberry muffin
5  (.39)   Chocolate chip cookie

6. Reset order
7. Checkout

如您所见,我遗漏了索引号后的句点(如果我的术语不准确,请见谅。我是一个极端的初学者,我很难把术语说清楚。)。这是我的代码:

products = [    "Drip coffee",
                "Hot chocolate",
                "Caffe Latte",
                "Bagel",
                "Blueberry muffin",
                "Chocolate chip cookie" ]

prices = [      2.39,
                3.59,
                3.79,
                1.49,
                2.69,
                2.39 ]

for i, product in enumerate(products):
  price = prices[i]
  print(i, "(${})".format(price), product)
print()
print("6. Reset", "\n" + "7. Checkout")

有什么方法可以添加或修复它,以便输出会在我需要的地方显示句点吗?此外,该项目的说明说将 6 和 7 的选项作为字符串放在 for 循环之外。这就是为什么他们不像其他人那样被包括在内。这也是为什么我能够轻松地在最后两个数字后面添加句点的原因,哈哈。任何帮助将不胜感激,并解释为什么解决方案是这样的。谢谢大家!

您应该标记语言,但这样做就可以了:

products = [    "Drip coffee",
                "Hot chocolate",
                "Caffe Latte",
                "Bagel",
                "Blueberry muffin",
                "Chocolate chip cookie" ]

prices = [      2.39,
                3.59,
                3.79,
                1.49,
                2.69,
                2.39 ]

for i, product in enumerate(products):
  price = prices[i]
  print("{}. (${})".format(i, price), product)
print()
print("6. Reset", "\n" + "7. Checkout")

“,”允许您添加另一个变量,但也会添加一个 space。只需将其更改为 + 并添加“.”即可,就像我在上面所做的那样,使用 .format 来放置两个变量。

要打印句号,您需要告诉 python 打印句号,当然!

print("{}.".format(i), "(${})".format(price), product)

但是,这是一个非常时髦的打印语句。让我们探索其他几个选项:

# a bit more readable using format
print("{}. (${}) {}".format(i, price, product))
# using the old-style string formatting
print("%d. ($%.2f) %s" % (i, price, product))
# using new-style f-strings
print(f"{i}. (${price:.2f}) {product}")

供参考,old-style string formatting and f-strings. Also, here's a cheat sheet 用于字符串格式化。我用 .2f 来表示精度为 2 的定点数,例如2.5 打印为 2.502.504234 也打印为 2.50

此外,让我们用 zip:

让你的循环更 pythonic
for i, (prod, price) in enumerate(zip(products, prices)):
   print(f"{i}. (${price:.2f}) {prod}")

干净多了,不是吗?祝您学习愉快!