提供了有关商店库存数据的列表,其中列表中的每个项目都代表项目的名称,库存量以及成本。使用.format方法(不是字符串连接)以相同的格式打印出列表中的每个项目。例如,第一个打印语句应显示为“商店有12双鞋,每双售价29.99美元。”
下面是我要使用的代码。
inventory = ["shoes, 12, 29.99", "shirts, 20, 9.99", "sweatpants, 25,
15.00", "scarves, 13, 7.75"]
for person in inventory:
item = person[0]
quantity = person[1]
amount = person[2]
print("The store has {} {}, each for {} USD.".format(item, quantity,
amount))
我不知道为什么它只抓住单词的第一个字母。以下是我的输出。 输出:
The store has s h, each for o USD.
The store has s h, each for i USD.
The store has s w, each for e USD.
The store has s c, each for a USD.
答案 0 :(得分:3)
您的格式化功能没有错;您解析商品,数量和数量的方式是错误的。如果仔细观察,inventory
是string
的列表,而不是列表列表。这就是为什么在打印item
时,它仅打印出"s"
的原因,因为那是字符串中的第一个字符。
尝试一下:
inventory = [["shoes", "12", "29.99"], ["shirts", "20", "9.99"], ["sweatpants", "25", "15.00"], ["scarves", "13", "7.75"]]
for person in inventory:
item = person[0]
quantity = person[1]
amount = person[2]
print("The store has {} {}, each for {} USD.".format(item, quantity,
amount))
答案 1 :(得分:1)
这是因为,您要指向特定的字符,即person[0]
是person
字符串的第一个字符。您必须先分割人员,然后格式化字符串,以下操作无需更改inventory
变量即可完成:
for person in inventory:
person_data = person.split(" ")
item = person_data[0]
quantity = person_data[1]
amount = person_data[2]
print("The store has {} {}, each for {} USD.".format(item, quantity,
amount))
答案 2 :(得分:1)
变量person
将成为列表中字符串中的每个元素。
person[0]
将返回person
的第一个字符
person[1]
将返回person
的第二个字符
您要做的是用逗号分隔字符串。
您可以在字符串上使用.split()
方法
item, quantity, amount = person.split(",")
答案 3 :(得分:1)
其他人的答案都可以很好地工作,但是我建议分割“,”,特别是对于OP给出的示例。与仅在“,”或“”上分开相比,它将避免出现多余的空格或逗号。
item, quantity, amount = person.split(", ")
或
person_data = person.split(", ")
item = person_data[0]
quantity = person_data[1]
amount = person_data[2]```
答案 4 :(得分:1)
尝试一下
microsoft.aspnetcore:*
只需拆分列表中的每个项目,
当您拆分inventory = ["shoes, 12, 29.99", "shirts, 20, 9.99", "sweatpants, 25, 15.00", "scarves, 13, 7.75"]
for person in inventory:
person = person.split(',')
item = person[0]
quantity = person[1]
amount = person[2]
print("The store has {} {}, each for {} USD.".format(item, quantity, amount))
# output
# The store has shoes 12, each for 29.99 USD.
# The store has shirts 20, each for 9.99 USD.
# The store has sweatpants 25, each for 15.00 USD.
# The store has scarves 13, each for 7.75 USD.
时,您会得到"shoes, 12, 29.99", "shirts, 20, 9.99".split(',')
这样的列表。因此,无需更改代码,只需在for循环后添加["shoes, "12", "29.99"]
行。循环时,每次获取一个字符串。这就是每次循环时都会发生的情况。
person = person.split(',')
我所做的只是拆分字符串,然后您可以根据需要轻松地访问它。
>>> 1st_str = "shoes, 12, 29.99"
>>> 1st_str[0]
's'
>>> 1st_str[1]
'h'
>>> 1st_str[2]
'o'