for 循环中的 return 语句[重复]

2025-02-08 08:52:00
admin
原创
46
摘要:问题描述:我一直在为学校做这项作业,但就是搞不清楚为什么我不能让这个程序正常工作。我试图让程序允许用户输入三种动物。它只允许我输入一种。我知道这与我在函数中放置返回语句有关,make_list但不知道该如何修复它。这是我的代码:import pet_class #The make_list function...

问题描述:

我一直在为学校做这项作业,但就是搞不清楚为什么我不能让这个程序正常工作。我试图让程序允许用户输入三种动物。它只允许我输入一种。我知道这与我在函数中放置返回语句有关,make_list但不知道该如何修复它。

这是我的代码:

import pet_class

#The make_list function gets data from the user for three pets. The function
# returns a list of pet objects containing the data.
def make_list():
    #create empty list.
    pet_list = []

    #Add three pet objects to the list.
    print 'Enter data for three pets.'
    for count in range (1, 4):
        #get the pet data.
        print 'Pet number ' + str(count) + ':'
        name = raw_input('Enter the pet name:')
        animal = raw_input('Enter the pet animal type:')
        age = raw_input('Enter the pet age:')

        #create a new pet object in memory and assign it
        #to the pet variable
        pet = pet_class.PetName(name,animal,age)

        #Add the object to the list.
        pet_list.append(pet)

        #Return the list
        return pet_list

pets = make_list()

解决方案 1:

您的问题恰恰在于您将 return 语句放在了 for 循环中。for 循环会运行其中的每个语句多次。如果您的某个语句是 return,那么函数在遇到该语句时就会返回。例如,在以下情况下,这是有道理的:

def get_index(needle, haystack):
    for x in range(len(haystack)):
        if haystack[x] == needle:
            return x

这里,函数不断迭代,直到找到大海捞针的位置,然后返回该索引(尽管有一个内置函数可以执行此操作,无论如何list.index())。

如果你想让函数按照你指定的次数运行,你必须把返回放在 for 循环之后,而不是里面。这样,函数将在控制退出循环后返回

def add(numbers):
    ret = 0
    for x in numbers:
        ret = ret + x
    return ret

(不过,也有一个内置函数可以做到这一点,sum()

解决方案 2:

您只需要返回pet_listfor 循环的外部,因此它会在循环运行结束后发生。

def make_list():
    pet_list = []

    print 'Enter data for three pets.'
    for count in range (1, 4):
        print 'Pet number ' + str(count) + ':'
        name = raw_input('Enter the pet name:')
        animal=raw_input('Enter the pet animal type:')
        age=raw_input('Enter the pet age:')
        print

        pet = pet_class.PetName(name,animal,age)
        pet_list.append(pet)

    return pet_list

解决方案 3:

您的 return 语句的缩进级别不正确。它应该与 for 语句的缩进级别相同。在循环内使用 return 会导致循环跳出。

解决方案 4:

删除回车前的一个缩进。

解决方案 5:

您会注意到 for 循环仅运行一次,因为 return 语句位于循环内的 if 语句内

我的代码现在也遇到了类似的问题:

返回给定数组中偶数整数的数量。注意:%“mod”运算符计算余数,例如 5%2 等于 1。

count_evens([2, 1, 2, 3, 4]) → 3
count_evens([2, 2, 0]) → 3
count_evens([1, 3, 5]) → 0

def count_evens(nums):
    summary = 0
    for i in nums:

        if i % 2 == 0:
            summary += 1
            return summary    



count_evens([2, 1, 2, 3, 4]) 

如果你去可视化执行并粘贴我的代码http://www.pythontutor.com/visualize.html#mode=edit

一旦我取消缩进 8 个空格(与 for 语句相同的深度),它就会运行多次并给出正确的输出。

解决方案 6:

你的间距不对。返回 pet_list 在 for 循环的范围内。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用