我试图编写一个接受输入并将它们放入列表的函数,然后对列表进行排序,并找到最大的数字。我一直在犯错,我不确定是什么错。我将发布我已经输入的当前代码。非常感谢任何帮助或建议,谢谢。
代码:
def findMax3():
y = list(lst)
y.sort(lst)
y[0] == y[-1]
lst = int(input())
print(findMax3())
答案 0 :(得分:1)
lst
吗?1 2 3 4 5
(空格分隔),可以使用map(int, input().split())
max
。这应该足够了:
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))