如何将数字与嵌套对象中的键值相乘?

问题描述

此代码出现错误:

def SellFor(Price,Vehicle):
    WheelsCost=(Vehicles[Vehicle][Wheels]*200)
    TotalPrice=WheelsCost
    if Price > (TotalPrice+1000):
        return False
    else:
        return True
while True:
    try:
        Price=int(input("Input Price to sell: "))
    except:
        print("\n Invalid Input. \n")
    else:break
    if SellFor(Price,VehicleToSell):
        Money+=Price
        del Vehicles[VehicleToSell]
        print()
        print("Vehicle Sold. \n")
        break
    else:
        print("Price too large.")

我正在制作一个车辆构造游戏,这只是销售车辆时脚本的一部分。

在分配WheelsCost变量时,您会注意到我给了它一个带有两个索引的另一个变量的值,并且该变量是一个字典,并且有了索引,我从主字典中访问对象/字典,然后在该次要对象中,我正在访问键值。

当函数在函数中的代码行WheelsCost=(Vehicles[Vehicle][Wheels]*200)中运行时出现错误,错误提示为KeyError: 4,在制造车辆时,我给了它4个轮子(所以它将是汽车),因此我假设4KeyError的来源。

,因此我的目标是将轮子的数量乘以200,所以我以代码中所示的方式进行操作,因为那是从对象中检索值的方式,似乎引发了错误,因此我编辑了该行代码,并将其直接转换为整数,因为我认为计算机正被键和值所混淆,所以我将其更改为:WheelsCost=(int(Vehicles[Vehicle][Wheels])*200),但仍然提出了同样的错误,所以在这一点上我很困,我想不起其他事情了,请不要太苛刻,我知道它的简单目标只是将两个数字相乘,但是我真的不知道该怎么做。

Wheels不是局部变量,所以我不能直接访问它,我必须引用整个字典,也要使用{循环}而不是print(Vehicles[Vehicle])来整洁地打印出来:

   Type : ground
   Colour : red
   Wheels : 4
   TopSpeed : 120
   Acceleration : 70
   Seats : 5
   Engines : 1
   Electric : False
   PlateNumber : 123456

所有给定的值均由用户提供,未经过硬编码。

解决方法

Wheels是字典键,它是一个字符串。您需要引用它。

WheelsCost Vehicles[Vehicle]['Wheels'] * 200

不带引号的情况下,将其视为变量,并且全局变量的值显然为4。因此,它正在尝试查找不存在的字典键4

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...