Python 语法错误:002:为变量赋值时出错

Python 语法错误:002:为变量赋值时出错,python,Python,我正在为Uni编写一个程序来查找所有的回文素数,我已经写出了这个程序,但是当我运行它时,我的第一个输入在试图给变量赋值时出错 请有人告诉我为什么会这样 start =input("Enter the start point N:") starteval= eval(start) endval = eval(input("Enter the end point M:")) reverse="" x=starteval+1 while x<endval: reverse+=start[

我正在为Uni编写一个程序来查找所有的回文素数,我已经写出了这个程序,但是当我运行它时,我的第一个输入在试图给变量赋值时出错

请有人告诉我为什么会这样

start =input("Enter the start point N:")
starteval= eval(start)
endval = eval(input("Enter the end point M:"))
reverse=""
x=starteval+1
while x<endval:
    reverse+=start[::-1]
    evalreverse=eval(reverse)

    if evalreverse==starteval:
        if starteval==2 or starteval==3:
            print(starteval)
        elif starteval%2==0 or starteval%3==0:
            pass

        i=5
        w=2
        a=0
        while i<=starteval:
            if starteval%i==0:
                break    
            else:
                a=True
                i+=2

        if a==True:
            print (starteval)
        else:
            pass
        x+=x+1
start=input(“输入起始点N:”)
starteval=eval(开始)
endval=eval(输入(“输入终点M:”)
反向=“”
x=起始值+1

当x尝试使用前3行时:

starteval=int(原始输入(“输入起始点N:”)


endval=int(原始输入(“输入端点M:”)
在Python 3中,整数文本不能以零开头:

>>> i = 002
  File "<stdin>", line 1
    i = 002
          ^
SyntaxError: invalid token
>>i=002
文件“”,第1行
i=002
^
SyntaxError:无效令牌
由于将
eval
函数应用于字符串输入,Python试图将输入解析为有效的Python表达式,这就是您看到错误的原因


使用
int(input(…)
获取整数会更有意义(尽管当用户在代码中键入非整数时,您仍然需要处理任何异常)。这样做的好处是,它将接受在
eval

中给您带来麻烦的输入。您可以编写一个小型的intParsing函数,为您处理简单的输入解析,然后基本上用intParsing()替换代码中的每个“eval()”函数

以下是您编辑的代码:

  def intParsing(input_str):
     str = ""
     # Delete all chars, that are no digits (you could use a regex for that too)
     for char in input_str.strip():
        if char.isdigit():
           str += char
     # Now you only got digits in your string, cast your string to int now
     r = int( str )

     print "result of parsing input_str '", input_str, "': ", r 

     return r

  start =raw_input("Enter the start point N:") 
  starteval= intParsing(start)               # I edited this line
  end = raw_input("Enter the end point M:")  # I edited this line
  endval =intParsing(end)                    # I edited this line

  reverse=""
  x=starteval+1
  while x<endval:
      reverse+=start[::-1]
      evalreverse= intParsing(reverse)      # I edited this line
def intParsing(输入):
str=“”
#删除所有没有数字的字符(也可以使用正则表达式)
对于输入字符串strip()中的字符:
如果char.isdigit():
str+=char
#现在字符串中只有数字,现在将字符串转换为int
r=int(str)
打印“解析输入的结果”,输入“:”,r
返回r
开始=原始输入(“输入起始点N:”)
starteval=intParsing(start)#我编辑了这一行
end=raw_输入(“输入端点M:)35;我编辑了这一行
endval=intParsing(end)#我编辑了这一行
反向=“”
x=起始值+1

当xAlso时,请不要使用eval。如果您使用的是Python 2,并且希望为输入获取整数值,只需将其转换为
int
并使用
raw\u input
。e、 g.
int(原始输入(“输入值”))
。或者,如果您希望使用
float
,则将
int
替换为
float
。或者他只是停止使用
eval()
,但没问题。让我们为它编写另一个函数……是的,他当然应该停止使用eval(),但这已经被多次提到了。这就是为什么创建一个新过程对我来说没有意义
  def intParsing(input_str):
     str = ""
     # Delete all chars, that are no digits (you could use a regex for that too)
     for char in input_str.strip():
        if char.isdigit():
           str += char
     # Now you only got digits in your string, cast your string to int now
     r = int( str )

     print "result of parsing input_str '", input_str, "': ", r 

     return r

  start =raw_input("Enter the start point N:") 
  starteval= intParsing(start)               # I edited this line
  end = raw_input("Enter the end point M:")  # I edited this line
  endval =intParsing(end)                    # I edited this line

  reverse=""
  x=starteval+1
  while x<endval:
      reverse+=start[::-1]
      evalreverse= intParsing(reverse)      # I edited this line