【问题标题】:Find Max number in list Using Functions使用函数在列表中查找最大数量
【发布时间】:2018-02-15 20:31:50
【问题描述】:

在第 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)

【问题讨论】:

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


    【解决方案1】:

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

    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])
    

    【讨论】:

      【解决方案2】:

      您的程序运行良好,只要您以格式输入-> num1.num2 老实说,这是一种奇怪的格式。我建议你使用

          list=numb.split(" ")
      

      然后输入两个数字,它们之间有一个空格。

      【讨论】:

        【解决方案3】:

        您的代码存在一些问题,因此我将尝试逐个检查它们。

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

        此外,您发送给函数的“数字”实际上是字符串,因此这里可能是您的代码的修改版本,它会稍微好一些

        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)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-29
          • 2021-10-07
          相关资源
          最近更新 更多