首页 > 解决方案 > 检索列表值并使用用户输入更改值

问题描述

我有一串产品零件 = 'ABCDEFGHIJKL'。每个字母的起始值假定为 100。用户应该将数字添加到他们选择的特定字母中,该字母的值将相应更新。我不应该对这段代码使用字典。我写了我大致知道的东西,除了那些 [?]

def updateInventory():
    startLevel = 100
    partIds = 'ABCDE'
    stockLevel = [startLevel] * len(partIds)
    productCodes = []
    while True:
        partIdentifier = input("Enter part identifier or <ENTER> to end: ").upper()
        if partIdentifier == '':
            break
        # partIdentifier must be in partIds
        if partIdentifier not in partIds:
            print("The part identifier is invalid")
        else:
            #print the part and its current quantity
            print(f"Current stock level for {partIdentifier} = [?]")
            while True:
                # user tp input how much quantity to add
                quantity = int(input("Enter quantity to add: "))
                if quantity < 0:
                    print("The quantity is invalid")
                else:
                    partIds[partIdentifier] += quantity
                    print(f"Updated stock level for {partIdentifier} = [?]")
                    break
updateInventory() 

示例运行

Enter part identifier or ENTER to end: T

The part identifier is invalid

Enter part identifier or ENTER to end: E

Current stock level for E = 100

Enter quantity to add: 0

The quantity is invalid

Enter part identifier or ENTER to end: E

Current stock level for E = 100

Enter quantity to add: 25

Updated stock level for E = 125

标签: pythonlist

解决方案


1在语句中使用 dict 键print而不是partIdentifier. 在第二部分中添加了数量,我认为这就是你想要的,如果你在 f 字符串的中间添加它不会被添加,除非你使用:=.

此外,您可以检查键是否在没有.keys().

def updateInventory():
    partIds = {'A': 100, 'B': 100, 'C': 100, 'D': 100, 'E': 100, 'F': 100, 'G': 100}
    while True:
        partIdentifier = input("Enter part identifier or <Enter> to end: ").upper()
        if partIdentifier == '':  # break the loop if the user press enter
            break
        # check the validity of the partIdentifier
        if partIdentifier not in partIds:
            print("The part identifier is invalid")
        else:
            print(f"Current stock level for {partIdentifier} = {partIds[partIdentifier]}")
            # check if the amount entered by the user is acceptable
            while True:
                quantity = int(input("Enter quantity to add: "))
                if quantity <= 0:
                    print("The quantity is invalid")
                else:
                    partIds[partIdentifier] += quantity
                    print(f"Updated stock level for {partIdentifier} = {partIds[partIdentifier]}")
                    break


updateInventory()

推荐阅读