Python 项目问题36
我想这很简单。和往常一样,我显然错了。我正试图用Python实现这一点(因为我不懂Python)。我的代码如下。我得到19作为输出,这显然是不正确的。我不知道我错过了什么。如有任何建议(无需修改代码),将不胜感激。我不想要正确的答案或代码(甚至是我错误的确切位置)-只是一个提示,让我走上正确的方向Python 项目问题36,python,Python,我想这很简单。和往常一样,我显然错了。我正试图用Python实现这一点(因为我不懂Python)。我的代码如下。我得到19作为输出,这显然是不正确的。我不知道我错过了什么。如有任何建议(无需修改代码),将不胜感激。我不想要正确的答案或代码(甚至是我错误的确切位置)-只是一个提示,让我走上正确的方向 def isPolynomial(number): if(str(number) == str(number)[::-1]): return True else:
def isPolynomial(number):
if(str(number) == str(number)[::-1]):
return True
else:
return False
def isBinaryPolynomial(number):
binNum = bin(number)
binStr = str(binNum)[2:]
revbinStr = binStr[::-1]
if(binStr == revbinStr):
return True
else:
return False
count = 0
for i in range(1, 1000001):
if isPolynomial(i):
if isBinaryPolynomial(i):
count += 1
print count
从
查找所有以10为基数和以2为基数的回文数小于一百万的数字的总和。看起来您的代码是正确的,但您需要仔细阅读它要求您提交的答案。我不能再具体了,除非把它说出来 这个问题问的是数字的总和,而不是计数。同样,这对你得到的答案没有影响,但是这个词是“回文的”,而不是“多项式的” #-*-编码:utf-8-*- """ @作者:neo """ def箱(x): 结果=“” x=int(x) 当x>0时: mod=x%2 x/=2 结果=str(mod)+结果 返回结果 打印总和(X范围(11000001)中的i对i)\ 如果str(i)==str(i)[::-1]和str(bin(i))==str(bin(i))[::-1])
英雄联盟哇!我真不敢相信我错过了。我还认为我可能需要解释一种情况,比如二进制中的110,我猜我需要解释倒转时的前导零。只是好奇,这东西需要多长时间才能运行?这里没有区别,但问题要求的数字小于1000000。您的范围包括1000000。
sum([x代表范围(1000000)中的x,如果str(x)==str(x)[::-1]和bin(x)[2::==bin(x)[:1:-1]])
注意,您可以通过简单地返回测试来简化函数返回中的if语句。i、 例如,return str(number)==str(number)[::-1]
@Blindy-我没有计时,但可能需要1-2秒?谢谢你指出这一点。这就是我匆匆忙忙得到的。我的愚蠢是无止境的,我应该投反对票!
# -*- coding: utf-8 -*-
"""
@author: neo
"""
def bin(x):
result = ''
x = int(x)
while x > 0:
mod = x % 2
x /= 2
result = str(mod) + result
return result
print sum(i for i in xrange(1,1000001)\
if str(i)==str(i)[::-1] and str(bin(i))==str(bin(i))[::-1])