You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:禁用IF/ELSE时实现用户输入与变量值关联

解决字符串输入与数值映射问题(禁用IF/ELSE)

我是Python新手(上周刚开始学习),小组需编写一个计算总价的程序,现遇到难题:用户输入的wood_type为字符串类型,无法关联到对应变量的整数值,且要求禁用IF/ELSE语句,目前陷入困境。以下是我们编写的代码:

min_price=30
oak_type=15
pine_type=0
black=0
white=0
gold_leaf=15
print("Welcome to Mark Daniels Carpenting Service!")
import random
order_num=random.randint(1000,1999)
print("\nYour order number is", (order_num))
cust_name=input("Enter name:")
print("Type of wood available:")
print("1 oak_type \n2 pine_type")
wood_type=input("Enter choice of wood:")

尝试计算总价时因类型不匹配报错,请问如何将wood_type的输入关联到oak_type或pine_type的数值?


用字典实现无IF/ELSE的映射

字典是Python中实现键值映射的高效工具,完全满足禁用IF/ELSE的要求,具体实现步骤如下:

  1. 定义映射字典:把用户可能输入的选项(数字编号或木材名称)作为键,对应的价格变量作为值:
wood_price_map = {
    "1": oak_type,
    "2": pine_type,
    "oak_type": oak_type,
    "pine_type": pine_type
}
  1. 获取对应价格:使用字典的get()方法获取输入对应的价格,同时处理无效输入(返回默认值,比如0):
# 输入无效时返回0,避免KeyError报错
selected_wood_price = wood_price_map.get(wood_type, 0)
  1. 整合到代码中:完整修改后的示例:
min_price=30
oak_type=15
pine_type=0
black=0
white=0
gold_leaf=15
print("Welcome to Mark Daniels Carpenting Service!")
import random
order_num=random.randint(1000,1999)
print("\nYour order number is", (order_num))
cust_name=input("Enter name:")
print("Type of wood available:")
print("1 oak_type \n2 pine_type")
wood_type=input("Enter choice of wood:")

# 定义木材类型与价格的映射字典
wood_price_map = {
    "1": oak_type,
    "2": pine_type,
    "oak_type": oak_type,
    "pine_type": pine_type
}
# 获取选中的木材价格
selected_wood_price = wood_price_map.get(wood_type, 0)

# 后续可继续完成总价计算,例如:
# total_price = min_price + selected_wood_price + 颜色费用 + 金箔费用
print(f"Selected wood price: {selected_wood_price}")

补充说明

  • 字典的get()方法比直接通过键取值(wood_price_map[wood_type])更安全,能避免用户输入无效内容时触发报错。
  • 这种映射方式完全不需要IF/ELSE语句,逻辑简洁直观,适合新手理解和维护。

内容的提问来源于stack exchange,提问作者whenwalcodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:01:08