python練習題1

需求:python

控制檯根據用戶選擇實現:app

     一、添加用戶(個別信息必填)add useriphone

     二、展現用戶列表 list userspa

     三、根據名字搜索用戶信息 search userorm

     四、根據名字修改用戶信息 modify user對象

     五、退出 exitblog

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()  

 

遇到的問題,看下圖:ip

 

開始把字典的定義放在了while循環外層,這樣,每次往list中添加一個新字典,就會使得以前添加的字典值所有更改成新的值input

問題緣由,放在外層,列表中添加的字典引用的全是同一個對象,一旦字典值進行了變化,其餘字典也跟着變化it

解決方法,把字典的定義放在while裏面,每次建立一個字典都是不一樣的對象,就不會更改以前的字典的值

相關文章
相關標籤/搜索