我仍然有一些与编辑列表中的值有关的问题。 我的清单包括以下内容:
listInfo = [["Appel",3,"Pitvrucht"], ["Peer",6,"Pitvrucht"], ["Banaan",3,"Exotisch]=, ["Xbanaan",4,"Exotisch"], ["Xpeer",6,"Pitvrucht"]]
这是代码sofar。
Edit_item = input ("Welk groente of fruit wilt u wijzigen?\n")
Edit_value = int(input("Welke voorraad komt erbij ?\nIndien een verhoging toets + (vb:+20)\nIndien een verlaging toets - (vb:-20)\n"))
for i, nested in enumerate(listVoorraad):
if Edit_item in nested:
if Edit_value < 0:
extract_value =listVoorraad.pop(i)
print(extract_value)
import re
int(re.match(r'\d+', extract_value).group())
print ("De huidige voorraad van",Edit_item,"bedraagt",)
问题是我有一个包含字符串和浮点数的列表。每当有人想要改变一部分重量时,例如同伴有6公斤。让我们说有人想用20公斤减去这个数量。然后它需要找到同伴拿出孔串部分(list.pop),然后计算剩余多少。当值达到零或更小时,它必须产生故障。在此之后,需要再次将其设置为字符串,然后将其附加到列表中。
无论如何帮我出去?
答案 0 :(得分:0)
您不必从列表中弹出项目,并将它们再次附加到最后 - 可以使用-=
运算符就地完成。
Edit_item = input ("Welk groente of fruit wilt u wijzigen?\n")
Edit_value = int(input("Welke voorraad komt erbij ?\nIndien een verhoging toets + (vb:+20)\nIndien een verlaging toets - (vb:-20)\n"))
for el in listVoorraad:
if el[0] == Edit_item:
if el[1] <= Edit_value:
# Raise an error, the value in the list too small.
raise ValueError
else:
el[1] -= Edit_value
答案 1 :(得分:0)
我认为你正在尝试做这样的事情:
list_info = [["Appel",3,"Pitvrucht"], ["Peer",6,"Pitvrucht"], ["Banaan",3,"Exotisch"], ["Xbanaan",4,"Exotisch"], ["Xpeer",6,"Pitvrucht"]]
dict_info = {k:v for k, *v in list_info}
edit_item = input ("Welk groente of fruit wilt u wijzigen?\n")
edit_value = int(input("Welke voorraad komt erbij ?\nIndien een verhoging toets + (vb:+20)\nIndien een verlaging toets - (vb:-20)\n"))
extract_item = dict_info[edit_item]
if edit_value > extract_item[0]:
extract_item[0] -= edit_value
...
答案 2 :(得分:0)
将您的listVoorraad
转换为更便于编辑的数据结构:
from types import SimpleNamespace
listVoorraad = [["Appel",3,"Pitvrucht"], ["Peer",6,"Pitvrucht"],
["Banaan",3,"Exotisch"]]
supply = {name: SimpleNamespace(name=name, quantity=quantity, kind=kind)
for name, quantity, kind for listVoorraad}
修改supply
:
item = input("Welk groente of fruit wilt u wijzigen?\n")
value = int(input("Welke voorraad komt erbij ?\n"
"Indien een verhoging toets + (vb:+20)\n"
"Indien een verlaging toets - (vb:-20)\n"))
if item not in supply:
exit("unknown item {}, available items: {}".format(
item, ", ".join(supply.keys())))
current_value = supply[item].quantity
if current_value > value:
supply[item].quantity -= value
else:
exit("not enough {item} got {current_value} requested {value}".format_map(
vars()))