Python脚本问题:如何根据用户输入从字典提取值并存储为变量
解决Python字典提取电价单价时逐字符输出的问题
问题根源
你遇到的逐字符输出问题,是因为错误地对字典返回的字符串类型单价执行了循环遍历操作——字符串本身是可迭代对象,循环时会自动拆分成单个字符。转布尔型完全没用,因为布尔型转换只会把非空字符串转成True,根本解决不了类型和遍历的问题。
正确实现方案
核心思路是:直接从字典中提取对应键的值,将其转换为数值类型(float)用于后续计算,不要对提取到的值做循环。
示例代码
# 定义CEMIG电价标识与对应单价(推荐直接用数值类型,避免后续转换) cemig_rates = { "Green Flag": 0.105, "Yellow Flag": 0.152, "Red Flag 1": 0.187, "Red Flag 2": 0.221, "Red Flag 3": 0.258 } # 获取用户输入并处理 user_flag = input("请输入当前电价标识:").strip() # 校验输入有效性 if user_flag in cemig_rates: # 直接提取单价,若字典值是字符串则转float,否则直接使用 unit_price = float(cemig_rates[user_flag]) if isinstance(cemig_rates[user_flag], str) else cemig_rates[user_flag] # 后续计算示例:假设已知电机总运行时长和功率 total_runtime = 15 # 电机总运行时长(小时) motor_power = 3.0 # 电机功率(kW) total_kwh = motor_power * total_runtime total_cost = unit_price * total_kwh print(f"当前电价单价:{unit_price} 元/kWh") print(f"电机总用电成本:{total_cost:.2f} 元") else: print("输入的电价标识无效,请重新输入!")
关键注意事项
- 字典存储单价时,优先用
float类型,而非字符串,这样提取后可直接用于计算,无需额外转换 - 必须先判断用户输入的标识是否存在于字典的键中,避免触发
KeyError异常 - 绝对不要对提取到的单价变量执行循环操作——只有当你需要遍历可迭代对象(比如列表、字符串)时才用循环,单个数值/字符串变量不需要循环
内容的提问来源于stack exchange,提问作者Vents
相关产品推荐
相关产品推荐

