您的位置:首页 > 编程语言 > Python开发

python练习题1

2017-04-29 20:36 183 查看
需求:

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

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里面,每次创建一个字典都是不同的对象,就不会更改之前的字典的值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: