请教一下,这个程序运行的时候提示: build_profile() takes 2 positional arguments but 3 was given。但是,build_profile里面我感觉传了3个参数呀。刚学,请赐教。
#编写函数创建用户简介:接受用户信息,但不确定什么信息,做输入信息的合成。
def build_profile(first,last,**user_info):
profile={}
profile['first_name']=first
profile['last_name']=last
for key,value in user_info.items():
profile[key]=value
return profile
first_name=input("Enter first name:")
last_name=input("Enter last name:")
user_profiles={}
while True:
user_info_key=input("请输入用户信息名称:")
user_info_value=input("请输入用户信息值:")
user_profiles[user_info_key]=user_info_value
if user_info_key=="quit" or user_info_value=="quit":
break
user_profiles[user_info_key]=user_info_value
user_profiles=build_profile(first_name,last_name,user_profiles)
print(user_profiles)
user_profiles=build_profile(first_name,last_name,user_profiles) 改成
user_profiles=build_profile(first_name,last_name,user_profiles=user_profiles)
**user_info 这样的参数需要以关键字参数的方式传入
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
将:user_profiles=build_profile(first_name,last_name,user_profiles)
改成:user_profiles=build_profile(first_name, last_name, **user_profiles)
user_info是关键字参数,要么用**解包,要么以key=value的形式分开写入:
user_profiles=build_profile(first_name, last_name, user_info_key=user_info_key, user_info_value=user_info_value, )