仅打印最大值(python)
我试图解决欧拉关于寻找最大的3位数回文的第5个问题 这是我的密码仅打印最大值(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) 它解决了这个问题,给出了正确的值,但也给出了每隔三位数的回文。我只希望它返回最大值。我尝试使用以下命令,但它不起作
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)