协助功能不起作用

时间:2014-08-28 22:55:49

标签: python list function sum return

我的代码的show_list功能不起作用。我收到一条消息,指出'multiples'未定义,但我无法确定问题。有人可以审查和建议我做错了什么。

def main():
    input1 = int(input("enter the low integer: "))
    input2 = int(input("enter the high integer: "))
    input3 = int(input("enter the integer for the multiples: "))

    show_multiples(input1, input2, input3)

    print ("List was created")


 def show_multiples(input1, input2, input3):

    num_range = range(input2, input1, -1)
    multiples = []

    for num in num_range:
        if num % input3 == 0:
            multiples.append(num)
            return multiples


    show_list(multiples)

def show_list(multiples):

    elem = len(multiples)
    average = sum(multiples) / elem
    num_range = range(input2, input1, -1)

    print ("the list has", elem, "elements.")

    for num in num_range:
        if num % input3 == 0:
        print (num, end=" ")

    print ("Average of multiples is  ", average)



main()

2 个答案:

答案 0 :(得分:1)

在定义函数show_list(multiples)

之前,请致电show_list

将main函数放在代码的末尾,并调用main()来运行它:

def main():

    input1 = int(input("enter the low integer: "))
    input2 = int(input("enter the high integer: "))
    input3 = int(input("enter the integer for the multiples: "))

    show_multiples(input1, input2, input3)

print ("List was created")
main()

只需致电show_list(multiples),请将其移至定义show_list

的位置

你会遇到更多问题:

def show_list(multiples):
    elem = len(multiples)
    average = elem / sum(multiples)
    print ("the list has", elem, "elements.")
    # num_range not defined only exists in show_multiples and input3 is also not accessable
    for num in num_range:
        if num % input3 == 0: 
            multiples.append(num)
            print (num)

不完全确定你想要什么,但我想这会让你更接近:

input1 = int(input("enter the low integer: "))
input2 = int(input("enter the high integer: "))
input3 = int(input("enter the integer for the multiples: "))
num_range = range(input2, input1, -1)

def show_multiples():
    multiples = []
    for num in num_range:
        if num % input3 == 0:
            multiples.append(num)
    return multiples

def show_list():
    multiples = show_multiples()
    elem = len(multiples)
    average = elem / sum(multiples)
    print ("the list has", elem, "elements.")
    for num in num_range:
        if num % input3 == 0:
            multiples.append(num)
        print (num)

show_list()

答案 1 :(得分:0)

mutliples未在全局范围内定义,仅在show_multiples()的范围内

您可能想要做的是在全球范围内,更改

show_multiples(input1, input2, input3)

multiples = show_multiples(input1, input2, input3)