【问题标题】:Python max and minPython 最大值和最小值
【发布时间】:2011-12-15 19:21:05
【问题描述】:

我对 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.")

【问题讨论】:

    标签: python max min


    【解决方案1】:

    问题在于numberintmaxmin 都需要列表(或其他可迭代的东西) - 因此,您必须将 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。

    【讨论】:

    • 完全正确,应该修复。然而,问题就是这样,我坚信提供的答案代码与问题代码的偏差尽可能小。
    • 感谢您的解释。
    • 这是我的荣幸。只是让您知道(因为您是新来的),如果您选择一个答案,习惯上是“接受”它 - 即答案左侧的小复选标记。请参阅the section in the faqthis post on meta 了解更多详情。
    【解决方案2】:

    这是因为每次你向 max 和 min 传递一个整数参数时,python 不知道如何处理它。

    Ether 至少传递两个参数:

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

    或一个可迭代的:

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

    这是doc

    【讨论】:

    • 如何将多个数字传递给最大值和最小值?感谢您解释为什么它不起作用。
    【解决方案3】:

    您需要将数字更改为数字列表。例如,

    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.")
    

    【讨论】:

      【解决方案4】:

      正如another answer 所述,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.")
      

      【讨论】:

        【解决方案5】:
        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))
        

        【讨论】:

        • 此程序将接受用户输入的任何数字计数。它还检查输入字符串是否为数字,否则抛出错误。
        • 没有任何解释的代码转储很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请edit您的问题并解释它如何比OP提供的更好。
        • int 对象不可迭代。有两种方法可以解决这个问题。首先定义一个列表,如前面的解决方案中提到的那样。第二个选项是将用户输入的数字与在 While 循环中迭代时定义的 Max 和 Min 变量进行比较。
        猜你喜欢
        • 2019-01-09
        • 2015-07-04
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多