Python:迭代中的语法分配错误

Python:迭代中的语法分配错误,python,syntax,iteration,counter,Python,Syntax,Iteration,Counter,我正在用python编写一个简单的自我学习脚本,脚本依次查找第1000个素数,但我得到了一个语法错误 x = 0 y = 2 counter = x integer = y while (counter>999): if (y%2 == 0 or y%3 == 0): y = y + 1 else:(counter = counter + 1 and integer = integer + 1) print (y) 当谈到在ELSE运算

我正在用python编写一个简单的自我学习脚本,脚本依次查找第1000个素数,但我得到了一个语法错误

x = 0
y = 2
counter = x
integer = y
while (counter>999):
      if (y%2 == 0 or y%3 == 0):
          y = y + 1
      else:(counter = counter + 1 and integer = integer + 1)
print (y)    
当谈到在ELSE运算符后面的赋值时,我不明白为什么它不允许我在计数器和整数中添加一个,而这在其他迭代场景中已经起作用了

   else:
      counter = counter + 1
      integer = integer + 1

在python中,为了避免
=
=
之间的拼写错误,不能在表达式中进行赋值。因此,您必须在两行中执行此操作:

x = 0
y = 2
counter = x
integer = y
while (counter>999):
    if (y%2 == 0 or y%3 == 0):
        y = y + 1
    else:
        counter += 1
        integer += 1
print (y)    

在python中,对变量的赋值没有布尔值。平均布尔运算符不做这个和这个

所以你需要拆分这些语句

x = 0
y = 2
counter = x
integer = y
while (counter>999):
    if (y%2 == 0 or y%3 == 0):
        y = y + 1
    else:
        counter += 1
        integer += 1
print (y)

'和'并不意味着'也这样做'。它的意思是“计算两个表达式的布尔真值,并且仅当两个表达式的计算结果都为真时才给出真值。”请去掉括号
while(counter>999):
应该是
而counter<999:
(包括逻辑错误的更正)。除了@MichaelKent的注释外,如果要在一行中使用多个语句,请用分号分隔它们
计数器+=1;整数+=1
将增加这两个变量。谢谢大家!但现在一切都在加速,它只会吐出5个,而不是第1000个prime@AaronMerrifield您正在测试y%2是否=0。我想您是想测试计数器%2==0。然而,我不知道你是如何得到你的程序逻辑。。。我不明白找到第1000个素数意味着什么谢谢!它消除了我的语法错误,但接着只打印出原始的y,而不是循环到while(计数器。@AaronMerrifield不要混淆
。如果
计数器
0
开头,它就不是
>999
,因此
while
循环不会执行。啊,我明白了!谢谢你,glglglgl,但现在print只吐出了5个!我很抱歉成为这样一个n00b,我仅仅三天前就承担了这个责任谢谢你!我t我没有消除语法错误,但继续只打印原始y,而不是循环到while计数器。@AaronMerrifield这是因为在while循环中检查
counter>999
。为了从1迭代到999,必须循环while
counter:)谢谢!但是要知道,随着一切都在加速,脚本最终只会吐出5个字符