在列表中查找最大数字使用函数

时间:2018-02-15 20:31:51

标签: python python-3.x python-2.7 function

第11行错误IndexError列表索引超出范围

def max (first, second):
    if first>second:
        return first
    else:
        return second
numb=input("Enter Number?")
list=numb.split(".")
first= list[0]
second= list[1]
result=max(first,second)
print(result)

3 个答案:

答案 0 :(得分:0)

仅当用户输入不带小数点的数字时才会发生此异常。看这里:

numb=input("Enter Number?")
list=numb.split(".")

如果用户输入一个整数,例如2,那么结果就是这个列表:[2]。因此,当您执行second= list[1]时,会导致错误,因为列表只有一个项目。您应该实施检查以确保列表具有适当数量的元素:

list=numb.split(".")
if len(list) == 2:
    first = list[0]
    second = list[1]
else:
    print("No decimal point, try again")

一些额外的说明。首先,对要比较的两个数字使用number.number是很奇怪的。相反,使用这个:

n = input("Enter two numbers separated by a space: ")
l = n.split(" ")

此外,您通过input()从用户处获得的所有内容都是字符串。因此,为了进行比较,您需要将两个数字字符串转换为整数:

first = int(list[0])
second = int(list[1])

答案 1 :(得分:0)

你的程序工作正常,给你输入格式 - > num1.num2 说实话,这是一种奇怪的格式。我建议你用

    list=numb.split(" ")

输入两个数字,两者之间有空格。

答案 2 :(得分:0)

您的代码存在一些问题,因此我会尝试通过它们,1乘1.

首先,你是通过一个点分裂,这意味着当你输入数字时,它们必须用你的点分开。否则,您将获得超出范围错误的索引。

此外,"数字"你发送到你的函数实际上是字符串,所以这里可能是你的代码的修改版本稍微好一点

def max (first, second):
if first>second:
    return first
else:
    return second
numb=input("Enter Number?")
list=numb.split(".") #maybe convert that to space
first= list[0]
second= list[1]
result=max(int(first),int(second))
print(result)