python练习题1

需求:

控制台根据用户选择实现:

     1、添加用户(个别信息必填)add user

     2、展示用户列表 list user

     3、根据名字搜索用户信息 search user

     4、根据名字修改用户信息 modify user

     5、退出 exit

listinfo=[]
def add_user():
    print "Please fill in according to the prompt information:"
    choise="y"
    
    while choise=='y':
        dictinfo={}
        name=raw_input("name*:")
        if name=="":
            name=raw_input("name cannot be empty:")
        age=raw_input("age:")
        sex=raw_input("sex:")
        iph=raw_input("iphone*:")
        if iph=="":
            iph=raw_input("iph cannot be empty:")
        
        dictinfo['name']=name
        dictinfo['age']=age
        dictinfo['sex']=sex
        dictinfo['iph']=iph
        listinfo.append(dictinfo) 
        print listinfo
        choise=raw_input("go on? y/n:")
    make_choice()
       
    return listinfo
def list_user(listinfo):
    print "The following information for all users"
    i=1
    for dictinfo in listinfo:
        print "*"*15
        print "%s user:"% i
        print "name is %s\nage is %s\nsex is %s\niph is %s" % (dictinfo['name'],dictinfo['age'],dictinfo['sex'],dictinfo['iph'])
        
        i+=1
    make_choice()

def search_user(listinfo):

    name=raw_input("Please enter the name of you want to search:")
    for dictinfo in listinfo:

        if dictinfo['name']==name:
            print "name is %s\nage is %s\nsex is %s\niph is %s" % (dictinfo['name'],dictinfo['age'],dictinfo['sex'],dictinfo['iph'])
        else:
            continue
    make_choice()



def modify_user(listinfo):
    name=raw_input("Who do you want to modify the information:")
    i=0
    for dictinfo in listinfo:
        if dictinfo['name']==name:
            print dictinfo
            modione=raw_input("what do you want to modify:")
            dictinfo[modione]=raw_input("new content:")
            listinfo[i]=dictinfo
            print "sucess"
        
        i+=1
    print listinfo
    make_choice()
        


def make_choice():
    print"\n"
    print "make a choice 1:add user,2:list user,3:search user,4:modify user,5,exit!"
    print "\n"
    choice=raw_input("please make a choice:")
    if choice=="1":
        add_user()
    elif choice == "2":
        list_user(listinfo)
    elif choice=="3":
        search_user(listinfo)
    elif choice=="4":
        modify_user(listinfo)
    elif choice=="5":
        print'DONE!'
        exit()
    else:
        print "please enter a number between 1-5:"  
        
listinfo=add_user()  

 

遇到的问题,看下图:

 

开始把字典的定义放在了while循环外层,这样,每次往list中添加一个新字典,就会使得之前添加的字典值全部更改为新的值

问题原因,放在外层,列表中添加的字典引用的全是同一个对象,一旦字典值进行了变化,其他字典也跟着变化

解决方法,把字典的定义放在while里面,每次创建一个字典都是不同的对象,就不会更改之前的字典的值

 

转载于:https://www.cnblogs.com/sunyucui/p/6786205.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值