只打印最大值(python)

时间:2015-07-09 21:34:23

标签: python

我正在尝试解决Eulor问题5,找到最大的3位数回文。

这是我的代码。

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))

有什么建议吗?

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

感谢任何可以为新用户提供指导的人。

6 个答案:

答案 0 :(得分:1)

您只需跟踪最大值:

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

答案 1 :(得分:0)

您需要在浏览数字时跟踪最大值,然后在结尾处打印出来:

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)

答案 2 :(得分:-1)

current_max = 0

for y in range (100,1000):
    for x in range (100,1000): #range is half-open
        if x*y > current_max and x*y == reverse(x*y):
        #Note that python is lazy and will only evaluate
        #x*y == reverse(x*y) if x*y > current max.
        #which is good, because casting to a string and back again
        #is marginally slower than a simple int comparison.
            current_max = x*y
print current_max

您应该跟踪当前最大的最大值。内置max将找到赋予它的最大的东西(无论是可迭代的还是多个参数,请参阅documentation

答案 3 :(得分:-1)

不是打印,而是将每个值存储到列表中,然后在完成后打印列表中的最大值。无论是那个还是保持一个正在运行的“最大的价值观”。值。

答案 4 :(得分:-1)

几乎那里!您可以从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

答案 5 :(得分:-1)

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

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)