Python的最大值和最小值

8
我对Python还很陌生,令我烦恼的是,我觉得我的问题非常简单。我在第8行不断收到错误提示。我只想让这个程序接收用户输入的数字,并打印出最大值和最小值,如果他们输入-1,我希望它能取消循环。
错误信息为“'int' object is not iterable”。
print "Welcome to The Number Input Program."

number = int(raw_input("Please enter a number: "))

while (number != int(-1)):
    number = int(raw_input("Please enter a number: "))

high = max(number)
low = min(number)

print "The highest number entered was ", high, ".\n"
print "The lowest number entered was ", low, ".\n"

raw_input("\n\nPress the enter key to exit.")
5个回答

18

问题在于 number 是一个整数 (int)。 maxmin 都需要列表 (或其他可迭代的对象) - 因此,你需要将 number 添加到一个列表中,类似这样:

number = int(raw_input("Please enter a number: "))
num_list = []

while (number != int(-1)):
    num_list.append(number)
    number = int(raw_input("Please enter a number: "))

high = max(num_list)
low = min(num_list)

阅读完jimbob博士的答案后,我想提醒一下 - 我的答案假定你在查找highlow想考虑-1。


8
完全正确,需要修复。虽然在问题中是这样的,但我坚信应该提供的答案代码与问题代码尽可能少地偏离。 - Nate
4
我很高兴能帮忙。你需要知道(因为你是新来的),如果你选择了一个答案,通常需要“接受”它-也就是说,在答案左侧有一个小的勾选标记。有关更多详细信息,请参阅FAQ中的此部分此帖子中的信息 - Nate

9

这是因为每次你向max和min函数传递一个整数参数时,Python不知道该怎么处理它。

请至少传递两个参数:

least_number = min(number1, number2,...,numbern)

或可迭代对象:

least_number = min([number1, number2, ...,numbern])

这里是 文档 的链接。

我要如何将多个数字传递给max和min函数?感谢关于为什么它无法工作的解释。 - Speedy Bast

1
你需要将一个数字改为数字列表。例如:
print "Welcome to The Number Input Program."

numbers = []
number = int(raw_input("Please enter a number: "))

while (number != -1):
    numbers.append(number)
    number = int(raw_input("Please enter a number: "))

high = max(numbers)
low = min(numbers)

print "The highest number entered was ", high, ".\n"
print "The lowest number entered was ", low, ".\n"

raw_input("\n\nPress the enter key to exit.")

0

正如另一个答案所提到的,minmax也可以接受多个参数。如果要省略列表,您可以

print "Welcome to The Number Input Program."

number = int(raw_input("Please enter a number: "))
high = low = number


while (number != int(-1)):
    number = int(raw_input("Please enter a number: "))
    high = max(high, number)
    low = min(low, number)

print "The highest number entered was ", high, ".\n"
print "The lowest number entered was ", low, ".\n"

raw_input("\n\nPress the enter key to exit.")

0
num = ''
active = True

largest = 0
smallest = 0
while active:
    num = input("Please enter a number")
    if num == 'done': 
        active = False
        break
    else:
        try:
            num = int(num)

            if largest < num:
                largest = num
            if smallest == 0 or smallest > num:
                smallest = num

        except ValueError:
            print("Please enter a valid number")

print("Largest no. is " + str(largest))
print("Smallest no. is " + str(smallest))

该程序将接受用户输入的任意数量的数字。它还会检查输入字符串是否为数字,否则会抛出错误。 - Tapan Dash
仅仅提供代码片段而没有任何解释很少有帮助。Stack Overflow 是关于学习的,而不是提供盲目复制粘贴的代码片段。请编辑您的问题并解释它为什么比原始代码更好。 - Chris
int对象不可迭代。有两种方法可以解决这个问题。首先,像之前的解决方案中提到的那样定义一个列表。第二个选项是在While循环中迭代时将用户输入的数字与定义的Max和Min变量进行比较。 - Tapan Dash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接