当我尝试使用 numpy 包解决这个问题时,我陷入了这个问题。我的想法是,我将对 100 到 999 之间的 3 位数字所做的所有计算相乘并保留一个列表,然后检查列表以查看哪些是回文并保存它们。最后,我将对列表进行排序并获得最大的回文。下面的代码显示了我试图做的事情。
import numpy as np
def void():
list1 = np.array(range(100,999))
list2 = np.array(range(100,999))
k = []
for i,j in zip(list1,list2):
k.append(np.multiply(list1,list2))
b = []
for x in range(0,len(k)):
if(reverseNum(k[x])==k[x]):
b.append(k[x])
print(b)
print(b[-1])
def reverseNum(num):
rev = 0
while(num>0):
rem = num % 10
rev = (rev*10) +rem
num = num // 10
return rev
void()
但是,当我尝试检查列表中的数字是否为回文时,出现以下错误:
Traceback (most recent call last):
File "main.py", line 40, in <module>
void()
File "main.py", line 22, in void
if(reverseNum(k[x]),k[x]):
File "main.py", line 31, in reverseNum
while(num>0):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
这是否意味着无法使用 numpy 作为解决此问题的方法?如果是,我哪里错了?
编辑:到目前为止我已经尝试过的(因为它被问到):根据错误消息,我尝试使用np.equalas 以及而np.greater不是检查但它给出了相同的错误。if(reverseNum(k[x])==k[x])num>0
白板的微信
紫衣仙女
慕尼黑的夜晚无繁华
精慕HU
相关分类