【问题标题】: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)