从列表中的字符串获取int

时间:2013-12-09 22:17:26

标签: python python-3.x

我仍然有一些与编辑列表中的值有关的问题。 我的清单包括以下内容:

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),然后计算剩余多少。当值达到零或更小时,它必须产生故障。在此之后,需要再次将其设置为字符串,然后将其附加到列表中。

无论如何帮我出去?

3 个答案:

答案 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()))