我试着回答以下问题 回文数字的两种读法相同。由两个两位数的乘积构成的最大回文数为9009=91×99。你知道吗
找出由两个3位数的乘积构成的最大回文。你知道吗
我的代码是:
for factorOne in range(100,1000):
for factorTwo in range(100,1000):
testNo = str(factorOne * factorTwo)
listNo = list(testNo)
length =len(listNo)
for callingNo in range(0,length):
if listNo[callingNo] == listNo[(length - 1) - callingNo]:
tempSol = int(testNo)
finalSol = 0
if tempSol > finalSol:
finalSol = tempSol
print(finalSol)
我只掌握了python的基本知识,因为我只学了大约两个星期的python,加上我所学的课程,大概有10个小时。 它给了我答案990009,我不完全清楚为什么和其他人的解决方案太复杂,我不明白。有人能帮忙吗?你知道吗
您的错误在于用于检查数字是否为回文的方法。一旦生成了factorOne*factorTwo*factortree的乘积,就可以简单地使用切片检查它是否是回文。你知道吗
你的回文测试不正确。你一次只测试一个数字,如果这一个数字和它的“镜像”匹配,你就声明它是回文。你知道吗
例如,您的最高数字的第一个和最后一个数字是匹配的。这意味着您在第一次迭代中的
if
测试是在测试所有数字之前的True
。你知道吗因为Python使反转字符串变得很简单,所以您所要做的就是对其反转进行测试
testNo
:这将在声明数字回文之前测试所有的数字。你知道吗
通过这种方法,可以很快找到数字:
或者,使用
max()
、生成器表达式和itertools.product()
:这个循环和测试的效果是在前两个数字的检查通过后立即宣布成功。如果第一个数字和最后一个数字匹配,就这样,找到了解决方案。你知道吗
您需要更改逻辑,以便它在声明成功之前检查所有数字。换句话说,反转
if
测试:如果测试失败,那么您就知道您没有解决方案。如果通过,则有一个电势解,但需要继续检查。你知道吗相关问题 更多 >
编程相关推荐