编写代码以找出列表中的最高编号
import sys
print ("Enter number of elements \n")
i = int(sys.stdin.read())
print ("Enter numbers \n")
input = sys.stdin.read()
numbers = input.split()
print ("Number of elements in list",len(numbers))
if (len(numbers)<=i):
print ("Valid Inputs \n", len(numbers))
max_index1=-1
for x in range(len(numbers)):
if ((max_index1==-1)or(numbers[x] >= numbers[max_index1])):
max_index1=x
print ("max index is",max_index1)
print ("Highest input number is", numbers[max_index1])
执行此代码时,我得到正确的输出如下:
Enter number of elements
5
Enter numbers
10 45 32 23 21
Number of elements in list 5
Valid Inputs
5
max index is 0
max index is 1
Highest input number is 45
但有时输出完全错误:
Enter number of elements
5
Enter numbers
10 45 32 6 21
Number of elements in list 5
Valid Inputs
5
max index is 0
max index is 1
max index is 3
Highest input number is 6
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
您要做的是使用max函数。您可以在一组数字上调用max,它将返回最大数字。
that.find(".data_div").data("bool", true);
答案 1 :(得分:0)
你应该在你的代码中使用int函数。
int(numbers[x]) >= int(numbers[max_index1]))
如果你不应该,Python比较数字[x]字符串和数字[max_index1]
在字典顺序中,“45”落后于“6”
答案 2 :(得分:0)
列表中的项目是字符串,因此按字典顺序订购:
>>> '6' > '45'
True
>>> 6 > 45
False
您应该将列表中的项目转换为整数类型,以通过替换:
进行数字排序input = sys.stdin.read()
numbers = input.split()
使用:
numbers = [int(i) for i in input().strip().split()] # use 'raw_input' for Python 2
使用内置input
函数读取项目, strip 前导和尾随空格,将字符串拆分为列表并转换每个项目使用列表推导列表到整数。
请注意,使用input
作为名称不是一个好主意,因为它阴影内置input
函数,您应该使用它来代替{{1} }。
答案 3 :(得分:0)
目前,您的列表numbers
是一个字符串列表。为了显示这一点,您可以打印数字。
>>> print(numbers)
['10', '42', '32', '6', '21']
在python 2.7中,可以将字符串与另一个字符串进行比较(可能)令人惊讶的结果
>>> '6' > '42'
True
要避免此问题,您可以将数字更改为整数列表
>>> numbers = map(int, numbers)
>>> print(numbers)
[10, 42, 32, 6, 21]
其中map
允许您将函数应用于数字的每个元素并返回结果。