为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的函数仅返回列表中的一项?

为什么我的函数仅返回列表中的一项?

隔江千里 2021-03-30 17:14:55
我正在学习python以提高自己的技能。我正在构建一个Web应用程序,以跟踪与我一起工作的自由职业者。我正在学习一个教程,但自己编写。这是代码:freelancers = ["juan", "andre"] #original listdef get_freelancer_titlecase(): # makes freelancers TitleCased    freelancers_in_titlecase = []#empty dict    for freelancer in freelancers:        freelancers_in_titlecase = freelancer.title()        return freelancers_in_titlecasedef print_freelancers_in_titlecase():#print freelancers in TitleCase    print_freelancers_in_titlecase = get_freelancer_titlecase()    print(print_freelancers_in_titlecase)freelancer_list = get_freelancer_titlecase() # Place the function inside a variableprint(freelancer_list)# here is my problem, this returns only the first entry "Juan", in title case but stops there.print(freelancers)# this is a check to see the items on the list and they are ["juan", "andre"]为什么print(freelancer_list)只退货一件?我需要能够调用列表,并让所有自由职业者拥有大写字母。后来,它应该是一本字典,其中也要保留一个ID,当然还要包含每个自由职业者的输入。这是我的第一个问题,所以先谢谢您。
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

您get_freelancer_titlecase(在获得第一个元素后立即从)返回 。


您需要使用进行存储以列出列表 freelancers_in_titlecase,append并在for循环外结束时返回。


freelancers = ["juan", "andre"] #original list


def get_freelancer_titlecase(): # makes freelancers TitleCased

    freelancers_in_titlecase = []

    for freelancer in freelancers:

        freelancers_in_titlecase.append(freelancer.title())

    return freelancers_in_titlecase


def print_freelancers_in_titlecase():#print freelancers in TitleCase

    print_freelancers_in_titlecase = get_freelancer_titlecase()

    print(print_freelancers_in_titlecase)


freelancer_list = get_freelancer_titlecase() # Place the function inside a variable


print(freelancer_list)  # ['Juan', 'Andre']

print(freelancers)  # ['juan', 'andre'] 


print_freelancers_in_titlecase()  # This function prints titlecased list.


查看完整回答
反对 回复 2021-04-09
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

您将freelancers_in_titlecase在第一个循环之后返回,此外,您将覆盖该变量。因此,您应该将和变量带入return外部,for loop而append不是替换它们:


def get_freelancer_titlecase(): # makes freelancers TitleCased

    freelancers_in_titlecase = []#it is actually a list

    for freelancer in freelancers:

        freelancers_in_titlecase.append(freelancer.title())

    return freelancers_in_titlecase

您可以考虑使用List Comprehensions重写此函数:


def get_freelancer_titlecase():

    freelancers_in_titlecase = [freelancer.title() for freelancer in freelancers]

    return freelancers_in_titlecase


查看完整回答
反对 回复 2021-04-09
?
白板的微信

TA贡献1883条经验 获得超3个赞

问题出在您的get_freelancer_titlecase()职能上。


def get_freelancer_titlecase(): # makes freelancers TitleCased

    freelancers_in_titlecase = []#empty dict

    for freelancer in freelancers:

        freelancers_in_titlecase = freelancer.title()

        return freelancers_in_titlecase

此函数执行以下操作:


创建一个名为的空列表(不是字典) freelancers_in_titlecase

循环浏览freelancers列表中的项目。

将空列表替换freelancers_in_titlecase为第一个自由职业者的职务。

返回该值(循环完成之前)。

试试这个吧。


def get_freelancer_titlecase(): # makes freelancers TitleCased

    freelancers_in_titlecase = [] #empty list

    for freelancer in freelancers:

        freelancers_in_titlecase.append(freelancer.title())

    return freelancers_in_titlecase

这会将每个自由职业者的标题大小写添加到列表中,并且仅在循环完成后才返回列表。


如果您要更改它以返回一个dict以原始名称为键,标题大小写为值的方式,则可以这样操作:


def get_freelancer_titlecase(): # makes freelancers TitleCased

    freelancers_in_titlecase = {} # empty dict

    for freelancer in freelancers:

        freelancers_in_titlecase[freelancer] = freelancer.title()

    return freelancers_in_titlecase


查看完整回答
反对 回复 2021-04-09
  • 3 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号