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的要求,具体实现步骤如下:
- 定义映射字典:把用户可能输入的选项(数字编号或木材名称)作为键,对应的价格变量作为值:
wood_price_map = { "1": oak_type, "2": pine_type, "oak_type": oak_type, "pine_type": pine_type }
- 获取对应价格:使用字典的
get()方法获取输入对应的价格,同时处理无效输入(返回默认值,比如0):
# 输入无效时返回0,避免KeyError报错 selected_wood_price = wood_price_map.get(wood_type, 0)
- 整合到代码中:完整修改后的示例:
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
相关产品推荐
相关产品推荐

