仅打印最大值(python)

仅打印最大值(python),python,Python,我试图解决欧拉关于寻找最大的3位数回文的第5个问题 这是我的密码 def reverse(num): return int(str(num)[::-1]) for y in range (100,999): for x in range (100,999): if x*y == reverse(x*y): print(x*y) 它解决了这个问题,给出了正确的值,但也给出了每隔三位数的回文。我只希望它返回最大值。我尝试使用以下命令,但它不起作

我试图解决欧拉关于寻找最大的3位数回文的第5个问题

这是我的密码

def reverse(num):
  return int(str(num)[::-1])

for y in range (100,999):
    for x in range (100,999):
        if x*y == reverse(x*y):
            print(x*y)
它解决了这个问题,给出了正确的值,但也给出了每隔三位数的回文。我只希望它返回最大值。我尝试使用以下命令,但它不起作用

print( max (x*y))
有什么建议吗

注意:我知道这可能不是解决这个问题的最佳方法,但我想用同样的方法完成它


感谢所有能够为新用户提供指导的人。

您只需跟踪最大价值:

def reverse(num):
  return int(str(num)[::-1])

largest = None
for y in range (100,999):
    for x in range (100,999):
        xy = x*y
        if xy > largest and xy == reverse(xy):
            largest = xy
print largest

您应该跟踪当前最大值。内置最大值将找到给定给它的最大值,无论是作为可数还是作为多个参数,请参见

def reverse(num):
  return int(str(num)[::-1])
current_max=0
for y in range (100,999):
    for x in range (100,999):
        xy=x*y
        if xy == reverse(xy):
            current_max=max(current_max,xy)
print(current_max)

不要打印,而是将每个值存储到列表中,然后在完成后只打印列表中的最大值。要么这样,要么保持一个“最大值”值。

你就快到了!您正在打印从100到998的每个数字的所有有效回文

您可以将所有这些有效回文存储到一个列表中,然后通过max函数传递该列表以获得最大的回文乘积

# Create a new list object
list_valid_palindromes = []    

def reverse(num):
  return int(str(num)[::-1])

for y in range (100,999):
    for x in range (100,999):
        if x*y == reverse(x*y):
            # Add the valid palindrome to the list
            list_valid_palindromes.append(x*y)

# Print the largest value on the list   
print max(list_valid_palindromes)
一个更有效的选择是,因为您已经在一个循环中,将最大值存储到一个变量中,并在完成乘法后打印它

# Create a new variable to hold the largest number
i_largestNumberSoFar = 0    

def reverse(num):
  return int(str(num)[::-1])

for y in range (100,999):
    for x in range (100,999):
        if x*y == reverse(x*y):
            # Compare and store the largest so far and the current product
            i_largestNumberSoFar = max( (x*y), i_largestNumberSoFar )

# Print what's was left on the variable
print i_largestNumberSoFar

不要打印每个数字,而是跟踪结果。循环完成后,打印最后的结果

def reverse(num):
  return int(str(num)[::-1])

result = 0  # add an variable to keep track of your results
for y in range (100,999):
  for x in range (100,999):
    if x*y == reverse(x*y):
        result = x*y

print(result)

保存变量中最高的结果怎么样,当for循环打印完成时?您尝试的解决方案和大多数答案都有一个off by one bug-您使用的范围从100到998。您是说project Euler问题4-最大回文产品吗?@pvg无所谓,他仍然得到了正确的答案answer@EpsilonX那太荒谬了。其目的是彻底搜索,而不是宣布一个不准确的算法正确,因为它恰好返回了正确的答案。另外,作为一个注释:一般来说,如果您要查找最大值,可能您希望从最大值开始,而不是从最小值开始。也许:PA更好的说法是,这是一个逻辑运算符,是一个短路运算符,而不是python是懒惰的,主要是因为它不是。谢谢,谢谢大家,这是第一个,非常简单,所以就写在这里。好吧,显然我太慢了,因为已经有很多答案了;这只会找到最近的一个,而不是最大的一个。
def reverse(num):
  return int(str(num)[::-1])

result = 0  # add an variable to keep track of your results
for y in range (100,999):
  for x in range (100,999):
    if x*y == reverse(x*y):
        result = x*y

print(result)