Here is a version that runs. I just removed the last index in the lovers loop
def displayHappy():
numLimit = input("Enter a positive integer: ")
countHappy = 0
countUnhappy = 0
liHappy = []
for num in range(1, numLimit + 1):
inNum = num
while inNum != 1 and inNum != 4:
inNum = zap(inNum)
if inNum == 1:
liHappy.append(num)
countHappy += 1
else:
countUnhappy += 1
print liHappy
for i in range(len(liHappy)-1):
if liHappy[i+1] - liHappy[i] == 1:
print "lovers: %d, %d" % (liHappy[i], liHappy[i+1])
def zap(intNum):
total = 0
while intNum != 0:
last = intNum % 10
total += last**2
intNum = intNum / 10
return total
displayHappy()