小编DrO*_*ine的帖子

如何使用Python逻辑检查回文

我正在尝试使用Python检查回文.我的代码非常for密集.

在我看来,从C到Python的最大错误是尝试使用Python实现C逻辑,这使得事情运行缓慢,并且它只是没有充分利用语言.

我在这个网站上看到了.搜索"C-style for",Python没有C风格的循环.可能会过时,但我将其解释为Python有自己的方法.

我试过四处寻找,我找不到最新的(Python 3)建议.如何在不使用for循环的情况下解决Python中的回文挑战?

我在课堂上用C语言完成了这个,但是我想在Python中以个人为基础.问题来自欧拉项目,顺便说一下,伟大的网站.

def isPalindrome(n):
    lst = [int(n) for n in str(n)]
    l=len(lst)
    if l==0 || l==1:
        return True
    elif len(lst)%2==0:
        for k in range (l)
        #####
    else:
        while (k<=((l-1)/2)):
            if (list[]):
                #####   

for i in range (999, 100, -1):
    for j in range (999,100, -1):
        if isPalindrome(i*j):
            print(i*j)
            break
Run Code Online (Sandbox Code Playgroud)

我在这里遗漏了很多代码.五个哈希只是我自己的提醒.

具体问题:

  1. 在C中,我会创建一个for循环,将索引0与索引max进行比较,然后使用max-1索引0 + 1,直到某事为止.如何在Python中做到最好?

  2. 我的for循环(在范围(999,100,-1)中,这是用Python做错的方法吗?

  3. 有没有人对我的职位有任何好的建议,好的网站或资源?我不是程序员,我不想成为一名程序员,我只想学习足够的东西,这样当我写完学士学位论文(电子工程)时,我不必同时学习适用的编程语言在项目中取得好成绩."如何从基本的C转到Python的伟大应用",那种事情.

  4. 任何特定的代码都可以很好地解决这个问题,我需要学习好的算法.我正在设想3种情况.如果值为零或单个数字,如果它是奇数长度,如果它是偶数长度.我打算为循环写...

PS:问题是:找到两个3位整数的最高值乘积,它也是一个回文.

python string palindrome

43
推荐指数
5
解决办法
16万
查看次数

Modulo给出了不可能的价值

我想要一个介于1到6之间的四个值的表.

我正在使用: rand() % 6 + 1;

这应该给出1到6之间的值.

除非rand()生成值0.

  1. 我一直得到7分.我不想要任何7个

  2. 兰德的范围是多少?我如何阻止它生成任何0值?

  3. 替代解决方案非常受欢迎.

  4. 我的老师给了我们使用"随机"的线索.
    我们在学校使用Borland C++ Builder 5.
    我在家里使用Dev-C++ 5.3.0.3.
    我发现它们如何工作有一些差异,我觉得很奇怪..
    我不能使用random(),它给了我未在范围内声明...

    int main (){
    
        int I;
        int Fasit[3];
    
        srand (time(NULL) );
    
        for(I=0; I<4; I++) {
            Fasit[I]=rand() % 6 + 1;
        }
    
        std::cout << Fasit[0] << " " << Fasit[1] << " " << Fasit[2] << " " << Fasit[3] << " ";
    
        return 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)

我得到的一些价值观:

2 6 1 7  
5 2 1 4  
5 2 1 4 …
Run Code Online (Sandbox Code Playgroud)

c++ modulo

1
推荐指数
1
解决办法
268
查看次数

Python list.remove for循环"x not in list"

我正在尝试用Python创建一个主要的筛子.

我从制作一个从2到2000的列表开始.我想用支票迭代所有素数,并从列表中删除所有素数的倍数.

我还没有绕过素数循环,但是我有一个方法从数字2开始,并删除它的所有倍数.

primes=list(range(2,2001))
p=2

while p<len(primes):
    for x in range (p*p, len(primes), p):
        primes.remove(x)
    print(primes)
Run Code Online (Sandbox Code Playgroud)

印刷品:[...] 1989,1991,1993,1995,1997,1999,2000]

正如你所看到的,2000号仍然存在,它不应该存在.

Traceback (most recent call last):
  File "C:/Users/Are/PycharmProjects/Project Euler/10.py", line 8, in <module>
    primes.remove(x)
ValueError: list.remove(x): x not in list
Run Code Online (Sandbox Code Playgroud)

我的推理有什么问题?

我正在使用PyCharm,有没有办法让我在错误时打印x的值?

python list pycharm

1
推荐指数
1
解决办法
3059
查看次数

标签 统计

python ×2

c++ ×1

list ×1

modulo ×1

palindrome ×1

pycharm ×1

string ×1