从第二个函数到第一个函数不会替换最大和最小的变量

时间:2019-03-05 09:31:46

标签: python-3.x

我必须设计以下程序: 设计一个带有循环的程序,让用户输入一系列数字。用户应输入-99表示该系列结束。输入所有数字后,程序应显示输入的最大和最小数字。

这是我到目前为止所得到的:

def main():
    inputNum = 0
    largest = 1
    smallest = 10000
    while inputNum != -99:
        inputNum = int(input("enter a number"))
        if inputNum == -99:
            break
        lgsm(inputNum, largest, smallest)
    print("The largest value is",largest, "the smallest value is",smallest)


def lgsm(inputNum, largest, smallest):
    if inputNum > largest:
        largest = inputNum

    elif inputNum < smallest:
        smallest = inputNum
main()

当我尝试运行它时,最小和最大的值保持不变 我真的不知道该怎么办

预期输出:

enter a number 1

enter a number 2

enter a number 5

enter a number 6

enter a number -99

最大值是1最小值是10000

1 个答案:

答案 0 :(得分:0)

Python不使用“按引用调用”,而是“按分配调用”。这意味着您在lgsm范围内更改的变量不会自动传递到main的外部范围。为此,您应该返回更改后的值:

def main():
    inputNum = 0
    largest = 1
    smallest = 10000
    while inputNum != -99:
        inputNum = int(input("enter a number"))
        if inputNum == -99:
            break
        largest, smallest = lgsm(inputNum, largest, smallest)
    print("The largest value is",largest, "the smallest value is",smallest)


def lgsm(inputNum, largest, smallest):
    if inputNum > largest:
        largest = inputNum

    elif inputNum < smallest:
        smallest = inputNum
    return (largest, smallest)
main()