函数1的输出作为函数2中的输入

时间:2016-04-09 06:49:08

标签: python function pycharm

我是Python的新手,有一个我无法解决的问题(一天半)。问题的第一部分问:

使用for循环创建一个函数,询问用户有多少项并输入项目。该函数应将其打印在列表中。 此作品

问题的第二部分是难过的。它要求:编写另一个函数,它将你在(a)中建立的列表作为输入并打印长度
列表中的每个字符串。最后打印所有字符串的总长度。你必须在中使用for循环 你的计划。

我试过这个,但它输出了六次输出..

def gym(gymbag):
    y=int(input("How many items in your gym bag?"))
    gymbag=[]
    for x in range(y):
        f=input("Enter an item")
        gymbag.append(f)
    print(gymbag)

def gyms(gymbag):
    for i in range(len(gymbag)):
        len(gymbag)
        print(gymbag)
gym('gymbag')
gyms('gymbag')

请帮助!

3 个答案:

答案 0 :(得分:1)

您的第一个函数应该有一个可以使用return给出的输出。您应该将第一个函数的输出用作第二个函数的输入。现在你只是传递一个字符串作为函数的参数。此外,您没有遍历列表中的项目。这样的事情对你有用:

def gym():
    y=int(input("How many items in your gym bag?"))
    gymbag=[]
    for x in range(y):
        f=input("Enter an item")
        gymbag.append(f)
    print(gymbag)
    return gymbag

def gyms(gymbag):
    total_length = 0
    for item in gymbag:
        print(len(item)) # LENGTH OF ITEM
        total_length += len(item)
    print(total_length) # LENGHT OF ALL ITEMS COMBINED IN GYMBAG

gymbag = gym()
gyms(gymbag)

答案 1 :(得分:0)

你缺少这个练习的基本思路,即从第一个函数返回一个值。打印值与返回值不同。

首先,您应该从gymbag函数返回列表gym。通过添加行来做到这一点 在打印声明之后return gymbag

然后,您对gyms函数的实现和使用都有问题。为了迭代一个列表并在其中打印每个字符串的长度,你应该直接遍历项目而不是项目数量(你可以这样做,但你不应该大多数时间):

for item in list_of_strings:
    print(len(item))

使用中的问题是你用字符串而不是字符串列表来调用它,而且它与gymbag函数的输出无关。

您可以直接执行,gyms(gymbag())或分两步执行:

stuff = gym()
gymbag(stuff)

最后,功能名称很重要。尝试给每个函数一个你能想到的最具描述性的名称(在合理的长度内)。

答案 2 :(得分:0)

你选择python3很好,我鼓励你继续练习,以便更好地学习它。

不幸的是,关于代码的一切都是错误的。首先,gym函数有一个从未使用过的输入!在使用之前,绝不能编辑参数。其他错误实际上是微不足道的,就像我提到的那样。例如,gymbag函数中的gym列表是本地的,但是您打算像全局变量一样使用它。你可以做到这一点(参见here),但我建议你采用@Justen选择的方法。这一般来说效率更高,更清洁。