我已经写了这个python代码。当我运行它时,我在最后得到一个索引错误; 我不知道为什么。我想知道是否有人能帮我。你知道吗
问题是找到一个最小的正数,它可以被所有的整数整除 数字从1到20。我的分析是正确的,但仅仅是最后的代码给我带来了困难。你知道吗
def leastCommonDenominator(num1, num2):
'''
Returns the least common denominator of two numbers
'''
num2List = range(1,num2+1)
if num1 < num2:
for i in num2List:
if (num1*num2List[i]) % num2 == 0:
return num1*num2List[i]
num1List = range(1, num1+1)
if num2 < num1:
for i in num1List:
if (num2*num1List[i]) % num1 == 0:
return num2*num1List[i]
else:
return num1
def leastNum():
'''
Prints the least number divisible
'''
myList = range(1,4)
print myList
num = 1
for i in myList:
num = leastCommonDenominator(num, myList[i])
print num
def main():
leastNum()
定义
myList
时,其值为(如您所知):当您迭代时,您正在循环遍历每个元素(1、2、3),但是当您调用
leastCommonDenominator
时,您使用的是列表的索引,而不是元素本身(即,在第一次遍历中,您没有调用myList
的第一个元素,而是调用myList[1]
,这是第二个元素。这导致在最后一个过程中出现IndexError
,因为myList[3]
引用的是列表中的第四个元素,我们可以看到它不存在(因为range
的值中不包含上界)。为了修复,您应该能够执行以下操作:当您像现在这样使用
for
循环时,您可以简单地使用值本身。如果您想引用元素的位置,可以使用enumerate
,它返回一个值的索引/位置和值本身(这是供参考的-这里不需要它,我不相信:))。例如:你也会得到同样的结果。你知道吗
使用
而不是
这里我是列表。它不超过元素。所以呢你不能用myList[i],另一方面你可以写
相关问题 更多 >
编程相关推荐