找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 299|回复: 1

[求助] 关于改变字典的值的问题

2

主题

3

帖子

3

积分

贫民

积分
3
刘越阳 发表于 2018-1-21 01:37:21 | 显示全部楼层 |阅读模式
抱歉之前的帖子代码可能有点冗长,意思没有表达清楚,我简单重写了一个问题部分
def user():
    answer = input("what you want to put in your bag? ")
    return answer

def put(answer,bag ={}):
    bag[answer] = 0
    return bag

def main():
    signal =True
    while signal:
        answer = user()
        bag = put(answer)
        if answer in bag:
            bag[answer] += 1
            print(bag)

main()
就是这样的一个代码,我想要实现每次用户输入同一个字符的时候,相对应键的值+1,比如bag ={"a":0},第二次当再次输入a的时候,我想他变成bag = {"a":1} 但是因为每次在循环体内有bag = put(answer),值都会被重置为0,请问怎么解决呢

回复

使用道具 举报

1

主题

7

帖子

7

积分

贫民

积分
7
newlearn 发表于 2018-2-12 18:17:13 | 显示全部楼层
本帖最后由 newlearn 于 2018-2-12 18:18 编辑

循环体内的 bag = put(answer) 这个函数里面会每次都把值设置为0,然后在下面的if语句内+1所有每次输出都是1。第二个参数你都不传 默认都是会新建一个实例的 而不是改变已有的实例,而且引用类型的参数不要这样设置默认参数。完整代码改成这样:
  1. def user():
  2.     answer = input("what you want to put in your bag? ")
  3.     return answer

  4. def put(answer,bag =None):
  5.     bag[answer] = 0
  6.    

  7. def main():
  8.     signal =True
  9.     bag = {}
  10.     while signal:
  11.         answer = user()        
  12.         if answer in bag:
  13.             bag[answer] += 1            
  14.         else:
  15.             put(answer,bag)
  16.         print(bag)

  17. main()
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表