如何修复Python函数无法修改字典键值对取值的问题?
问题修复方案
你的代码里vars['strt']始终为空,核心原因是Python的参数传递逻辑:字符串是不可变类型,把vars['strt']传给inp函数的decidvar参数时,只是传递了空字符串的副本,函数内部给decidvar赋值输入内容,只会修改这个局部变量,根本影响不到原字典里的vars['strt']。
下面给两种简单的修复方式:
方式一:直接操作字典(推荐)
修改inp函数,让它接收字典和键名,这样就能直接修改字典内的对应值:
vars = {'strt': ''} def inp(var_dict, key, msg): print(msg) # 直接修改传入的字典对应键的值 var_dict[key] = input('≥ ') # 调用时传入字典、目标键名和提示信息 inp(vars, 'strt', "do you want to learn the rules? (y/n)") if vars['strt'] == 'y': rules() # 假设rules()是你已定义的规则展示函数
方式二:让函数返回输入值
让inp函数返回用户输入的内容,再把返回值赋值给vars['strt']:
vars = {'strt': ''} def inp(msg): print(msg) # 返回用户输入的内容 return input('≥ ') # 把函数返回值直接赋值给字典的键 vars['strt'] = inp("do you want to learn the rules? (y/n)") if vars['strt'] == 'y': rules()
这两种方式都能实现你要的:输出问题、获取输入并把值存入vars['strt']中。
内容的提问来源于stack exchange,提问作者Matthias Jungheim
相关产品推荐
相关产品推荐

