加法减法计算器获取用户操作选择时程序流程中断问题求助
问题分析与修复方案
你的代码存在几个关键问题,导致流程中断或计算结果错误:
- 运算类型判断逻辑错误:你将
x和y定义为元组,但判断时用choose_user == str(x),这会把元组转成类似"('Addition', 'addition')"的字符串,用户输入永远无法匹配。应该用in关键字判断输入是否在允许的选项集合内。 - 加法变量初始化位置错误:
somma = 0放在while循环内部,每次循环都会重置总和为0,最终只会保留最后一个输入的数字。需将初始化移到循环外。 - 减法逻辑完全错误:你每次把
differenza设为当前输入的数,紧接着又减去自己,结果永远为0。正确逻辑是用第一个数作为初始值,后续依次减去其余输入的数。 - 字符串拼接错误:输出结果时直接将整数与字符串相加会报错,需把数值转为字符串再拼接(或用f-string简化)。
- 输入提示表述不准确:第一个输入提示写的是"how many numbers you have to add",但用户可能选择减法,应改为通用表述。
修复后的代码
print("Hello User, I am an addition and subtraction calculator. Choose which operation to perform!") numbers = int(input("First choose how many numbers you will use: ")) counter = 0 if numbers > 0: print(f"Well, you have {numbers} numbers! Choose which operation you want to do!") add_options = ("Addition", "addition") sub_options = ("Subtraction", "subtraction") print("Addition or Subtraction?") choose_user = input().strip() # 去除输入前后空格,提升容错性 if choose_user in add_options: print("Okay perfect! Insert your numbers: ") somma = 0 # 总和初始化放在循环外 while counter != numbers: counter += 1 number_user = int(input(f"Number {counter}: ")) somma += number_user print(f"Your answer is: {somma}") # f-string自动处理类型转换 elif choose_user in sub_options: print("Okay perfect! Insert your numbers: ") differenza = None # 标记是否为第一个输入的数 while counter != numbers: counter += 1 number_user = int(input(f"Number {counter}: ")) if differenza is None: differenza = number_user # 第一个数作为减法初始值 else: differenza -= number_user print(f"Your answer is: {differenza}") else: print("Invalid operation choice! Please enter Addition or Subtraction.") else: print("You need to enter a positive number of values!")
内容的提问来源于stack exchange,提问作者user15685863
相关产品推荐
相关产品推荐

