如何修改Python代码实现通过->运算符完成不同用户间的积分转移功能
代码修改方案
你的代码不生效有两个核心问题:
- 原
->处理逻辑误用了比较运算符==,完全没有实现转账功能 - 原
get_name函数无法提取->两侧的两个用户名,需要单独处理带转账标识的条目
修改后的完整代码如下,全部用Python基础语法实现,方便理解:
def get_name(string): return string.replace("+", "").replace("-", "") def keepTabs(input_list: list): output = {} for entry in input_list: # 优先处理转账逻辑 if "->" in entry: # 拆分转出方、转入方用户名 from_user, to_user = entry.split("->") # 确保两个用户已在字典中,无记录则初始化为0分 if from_user not in output: output[from_user] = 0 if to_user not in output: output[to_user] = 0 # 转出方所有积分加到转入方 output[to_user] += output[from_user] # 转出方积分清零 output[from_user] = 0 # 转账条目无需处理加减分,直接进入下一条 continue # 原有加减分逻辑保持不变 name = get_name(entry) if name not in output: output[name] = 0 if "++" in entry: output[name] += 1 if "--" in entry: output[name] -= 1 return output print(keepTabs(["Jim--", "John--", "Jordan--", "Jim++", "John--", "Jeff--", "June++", "June->Jim"]))
你提供的测试用例运行后输出为:{'Jim': 1, 'John': -2, 'Jordan': -1, 'Jeff': -1, 'June': 0},完全符合需求:Jim原有0分,接收June转来的1分后最终得1分,June转出后积分清零。
内容的提问来源于stack exchange,提问作者Joshua Bradley
相关产品推荐
相关产品推荐

