一个和字典有关的问题

假定一款游戏中共有A,B.C,D四种商品,每种商品的金币价格存在字典price={’A’:20,’B':30,’c’:40,'D':50)中。编写一个程序,输入一个金币值。以及若干商品名称,判断若能购买这些商品,输出YES,否则输出NO。

回答引用ChatGPT:以下是可以实现该功能的 Python 代码:

price = {'A': 20, 'B': 30, 'C': 40, 'D': 50}  # 商品价格字典

def can_afford(gold, items):
    total_cost = sum(price[item] for item in items)
    if gold >= total_cost:
        return "YES"
    else:
        return "NO"

gold = int(input("请输入您的金币数量:"))
items = input("请输入要购买的商品名称(用空格分隔):").split()

print(can_afford(gold, items))

首先,我们定义了一个 price 字典,其中包含了每种商品的金币价格。接着,我们定义了一个名为 can_afford 的函数,该函数接受两个参数:gold 表示金币数量,items 表示要购买的商品名称列表。函数首先使用一个列表推导式计算出购买这些商品的总价钱,然后将其与用户的金币数量进行比较,如果足够购买,返回字符串 "YES",否则返回 "NO"。

最后,我们从用户那里获取金币数量和商品名称列表,然后调用 can_afford 函数并打印其返回值即可。


price={'A':20,'B':30,'C':40,'D':50}
credit = int(input())
items = input().split()
if len(set(items) - set(price)) > 0:
    print('NO') # 有不在商品列表的内容
elif sum([price[k] for k in items]) > credit:
    print('NO')
else:
    print('YES')

该回答引用ChatGPT
题目描述已经十分清晰,这里将代码补充完整。

首先,按照要求读入金币值和商品名称,并依据字典将每种商品的价格计算出来。然后累加所购买的商品价格,最终和输入的金币值进行比较,如果小于,则输出YES,否则输出NO。

完整代码如下:

python
price = {'A':20, 'B':30, 'C':40, 'D':50}
coins = int(input("请输入金币值:"))
items = input("请输入商品名称,用空格分隔:").split()

total_price = 0
for item in items:
if item not in price:
print("商品名称有误:", item)
break
total_price += price[item]

if total_price <= coins:
print("YES")
else:
print("NO")


代码的运行结果如下:


请输入金币值:100
请输入商品名称,用空格分隔:A B C
YES


需要注意的是,输入的商品名称需要与字典中的名称保持一致,否则会输出“商品名称有误”。不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^