我必须设计以下程序: 设计一个带有循环的程序,让用户输入一系列数字。用户应输入-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
答案 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()