Python 语法错误:002:为变量赋值时出错
我正在为Uni编写一个程序来查找所有的回文素数,我已经写出了这个程序,但是当我运行它时,我的第一个输入在试图给变量赋值时出错 请有人告诉我为什么会这样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[
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