在Python中找到最多3个数字

时间:2016-11-28 15:46:41

标签: python list function

我试图编写一个接受输入并将它们放入列表的函数,然后对列表进行排序,并找到最大的数字。我一直在犯错,我不确定是什么错。我将发布我已经输入的当前代码。非常感谢任何帮助或建议,谢谢。

代码:

def findMax3():
    y = list(lst)
    y.sort(lst)
    y[0] == y[-1]

lst = int(input())
print(findMax3())

7 个答案:

答案 0 :(得分:1)

  1. 您需要传入变量 - lst吗?
  2. 如果您希望主打印件,则需要返回值。
  3. 你需要一个整数数组的常量输入格式,我会建议1 2 3 4 5(空格分隔),可以使用map(int, input().split())
  4. 反转列表
  5. 使用内置max
  6. 您想限制自己使用3个数字阵列吗?如果是,请使用断言。
  7. 这应该足够了:

    def findMax3(lst):
        assert len(lst) == 3
        lst.sort()
        return max(lst)
    
    lst = map(int, input().split())
    print(findMax3(lst))
    

答案 1 :(得分:1)

这是更正后的代码:

def findMax3(lst):
    y = lst[:]
    y.sort()
    return y[-1]

lst = [int(x) for x in input().split()]
print(findMax3(lst))

我说findMax()会是一个更好的名字,因为这可以找到任意长度的列表的最大值。

请记住以下内容也是如此:

lst = [int(x) for x in input().split()]
print(max(lst))

答案 2 :(得分:0)

将数字放在列表中,然后使用max()函数获取列表中的最大值,如下所示:

#create an empty numbers list
lst=[]

#loop for getting input numbers
for i in range(1,4):    

    try:
        #here we get the input number
        my_new_number=int(raw_input("Please input the number "+str(i)+"/3 :\n"))
    except:
        #in case of it is not a number raise an alert
        print "not regular integer number"

    #here we check that number not exist
    if my_new_number not in lst:

        #add the current input number to the list
        lst.append(my_new_number)
    else:
        print "the number",my_new_number,"already exist in this list"

#show the maximum number of the list
print "The maximum number is",max(lst)

答案 3 :(得分:0)

您可能有兴趣逐个输入列表项,而不是使用split()函数来分割输入。另外,要检索最大列表,您已经可以使用内置的max()函数:

>>> num_list = []
>>>
>>> for i in range(3):
...     num = input("Enter number {}: ".format(i + 1))
...     num_list.append(int(num))
...
Enter number 1: 3
Enter number 2: 6
Enter number 3: 2
>>>
>>> max_num = max(num_list)
>>> print(max_num)
6

答案 4 :(得分:0)

首先,Ebe Isaac给出了一个很好的解释,你应该看看他的解决方案并理解它的工作原理。 您的代码存在一些问题。

lst = int(input())
print(findMax3())

您正在输入需要用某个非数字字符分隔的数字列表,因此您不能在输入值上使用int()。

lst = [int(x)for x in input()。split()]

应该给你你想要的东西(默认分隔符是空格)。要了解有关此格式的更多信息,请参阅列表推导。

接下来,调用findMax3(),但此函数不返回值,因此不会打印任何内容(参见下文)。另外,将列表作为参数发送会更好,这样可以避免以后再次复制它(见下文)。

lst = input().split()
print(findMax3(lst))

现在为你的功能:

def findMax3():
    y = list(lst)

您应该将参数(输入的列表)发送给该函数。无论您在函数名称后的括号中放置什么,都可以重命名此参数。您在这里使用y,因此我们可以将其重写为:

def findMax3(y):

并删除y = list(lst)行。

y.sort(lst)

使用方法或功能时,查找文档以确定所需的参数是个好主意。您将看到排序可以采用两个参数(键和反向),因此我们可以通过将其更改为:

来修复此行。
y.sort()

下一行:

y[0] == y[-1]

是一个布尔表达式,如果排序列表的第一个元素(y [0])等于排序列表的最后一个元素(y [-1]),则返回True或False。说实话,我不确定你在这里要做什么。由于该函数旨在查找列表的最大值,因此需要返回该值,因此我们需要使用return()。最大值将是列表的最后一个,因此您可以执行以下操作:

return(y[-1])

因此,如果您想保留原始代码的流程,可以将其更改为:

def findMax3(y):
    y.sort()
    return(y[-1])

lst = [int(x) for x in input().split()]
print(findMax3(lst))

我希望这会有所帮助。祝你好运。

答案 5 :(得分:0)

正如许多人所提到的,你需要让你的函数知道哪个列表可以找到最大值。为此,您需要将列表名称放在函数的参数列表中,即findMax3(lst)

您的功能仍然无效,因为您没有从中返回任何内容。您需要使用return关键字,然后返回要返回的内容,以便让函数为您提供响应。例如,return 1会将1的值返回给调用此函数的任何人。使用该示例,您需要决定返回调用者的内容。

我的findMax3版本没有任何其他函数调用:

def findMax3(*args):
    max3 = args[0]
    for n in args[1:3]:
        if n > max3:
            max3 = n
    return max3

这非常接近内置max函数在给出相同的3个输入

时所做的事情

答案 6 :(得分:0)

如果您已经有一个列表,那么您可以简单地使用 max 函数来获取列表中 3 个数字中的最大数字。

lst = [5, 2, 9]
print(max(lst))
# output
9

或者我假设您有三个不同的数字作为输入,然后您可以将它们传递给您想要的方法以获得最高数字。

# function to get max among 3 integers
find_max(x, y, z):
    return max([x, y, z])

# take input
num1 = int(input("enter num1: "))
num2 = int(input("enter num2: "))
num3 = int(input("enter num3: "))

# call your function
print(find_max(num1, num2, num3))