为此工作学习经验。我想出了以下3个想法
A)用户创建了一个配置文件,因此我有fname和lname的字典。
B)然后我随机生成一个userid,将其添加到列表中。该列表仅包含随机的用户ID,稍后我将使用该用户ID,例如:userid012,userid89
C)我在新词典中分配了A和B。输出看起来像这样:
used_id user3 个人资料{'lastname':'jon','firstname':'jme'}
问题:我只看到最后一个值用户ID和名称。如果我有两个以上的条目,则看不到第一个。有用的提示将非常有帮助。 谢谢。
import random
print('Enter choice 1-3:'),'\n'
print('', '1-Create new profile','\n',
'2-Update existing profile','\n',
'3-Delete a profile')
#global variables
choice=int(input())
user_directory={}
#Dictionary function that takes fst and lst name and puts in a dict:
def new_profile():
new_profile={}
fn=input('First name:')
new_profile['firstname']=fn
ln = input('Last name:')
new_profile['lastname'] = ln
for k,v in new_profile.items():
new_profile[k]=v
return new_profile
#Generates a random user id which we will assign to a user created above
def user_id():
uid_list=[]
user_id='user'+str(random.randint(0,101))
uid_list.append(user_id)
if(user_id in uid_list):
uid_list.remove(user_id)
user_id = 'user' + str(random.randint(0, 101))
uid_list.append(user_id)
return user_id
#This dictionary will have user id and associate created new_profile
def addToDict():
#user_directory={} unable to use this making it global
user_directory['used_id']=user_id()
user_directory['profile']=new_profile()
for key,value in user_directory.items():
user_directory[key]=value
return user_directory
if(choice==1):
# myuser=addToDict() this appraoch did not work
#addToDict>> adding it here will not get this option in while loop, put inside while
while True:
addToDict()
print('Add another entry?')
choice=input()
#Put the line below to see if number increases
print('Current', len(user_directory)-1)
if(choice!='stop'):
continue
else:
break
for k,v in user_directory.items():
print(k,v)
答案 0 :(得分:1)
new_profile()
最后一行中的缩进。 return
在第一次迭代中运行。试试:
for k,v in new_profile.items():
new_profile[k]=v
return new_profile
顺便说一句,您似乎并没有遵循Python中的大多数约定/标准。看一下this simple tutorial关于PEP(官方样式指南)的信息。这样,您可以编写外观更好的代码,我们可以更快地提供帮助:)
答案 1 :(得分:0)
您的代码包含几个错误。我只能猜测你想做什么。让我们从一个显而易见的例子开始:函数addToDict()
应该应该向字典中添加一个新用户。
您通常希望拥有一本字典,该字典将user_id映射到个人资料:
def addUserToDict(user_dictionary, user_id, profile):
user_directory[user_id] = profile
然后在下面的输入循环中,使用字典,新的用户ID和新的配置文件调用此函数。
第二个错误出现在user_id()
中:您总是返回带有一个新元素和一个新的随机用户ID的列表。而且,您总是会丢弃第一个生成的用户ID,然后添加第二个。