Problem 4
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99.
Find the largest palindrome made from the product of two 3-digit numbers.
Solution
#!/usr/bin/env python
def ispal(num): #Check if the number is a palindrome
val = str(num) #Python just does the right thing here. Nice.
for each in range(0,int((len(val)+1)/2)): #Any mismatch return false
if val[len(val)-1-each]!=val[0+each]: return False
return True #otherwise return true
def calc(): #brute force looking for palindromes
temp = 0
largest = 0
for each in range(999,100,-1):
for other in range(999,100,-1):
temp = each * other
if ispal(temp):
largest = max(largest,temp)
return largest
if __name__ == '__main__' :
print (calc())
The answer is 906609.
Approach

Converting to a string worked exactly like it should have and python made it trivial to code. Using some sort of built-in to reverse the string and see if it matches the original sting would probably be faster than a char by char comparison.
Benchmarks
The benchmarks fell out pretty much like the others. Boring example, Sorry!Problem #4 Benchmarks
time python palindromes.py
906609
real 0m0.746s
user 0m0.744s
sys 0m0.000s
time python -O palindromes.py
906609
real 0m0.764s
user 0m0.756s
sys 0m0.004s
time python3 palindromes.py
906609
real 0m0.839s
user 0m0.828s
sys 0m0.008s
time python3 -O palindromes.py
906609
real 0m0.875s
user 0m0.868s
sys 0m0.004s
time pypy palindromes.py
906609
real 0m0.090s
user 0m0.080s
sys 0m0.008s
time pypy -O palindromes.py
906609
real 0m0.087s
user 0m0.072s
sys 0m0.012s
time jython palindromes.py
906609
real 0m2.835s
user 0m5.852s
sys 0m0.176s