2016-03-24 5 views
-2

Uniがすべての回文素数を見つけるためのプログラムを書いていますが、すでにプログラムを書きましたが、実行すると最初の入力にエラーが発生します値を変数に追加します。構文エラー:002:値を変数に代入する

なぜこのようなケースか教えてください。

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 

私が受け取る出力に含まは

"Enter the start point N:200 
Enter the end point M:800 
Traceback (most recent call last): 
    File "", line 1, in <module> 
    start =input("Enter the start point N:") 
Syntax Error: 002: <string>, line 1, pos 3" 

してくださいとあなたに感謝です!

+4

また、evalを使用しないでください:ここでは

は、編集したコードです。 Python 2を使用していて、入力値の整数値を取得しようとしている場合は、単純に 'int'としてキャストし、' raw_input'を使用してください。例えば'int(raw_input("あなたに値を入力する) ")'。または、 'float'を使用する場合は、' int'を 'float'に置き換えてください。 – idjaw

答えて

0

使用する最初の3行試してみてください代わりに:Pythonの3整数リテラルで

starteval = int(raw_input("Enter the start point N:"))
endval = int(raw_input("Enter the end point M:"))

0

がゼロで始めることはできません。

>>> i = 002 
    File "<stdin>", line 1 
    i = 002 
     ^
SyntaxError: invalid token 

あなたがevalを適用しているので関数を文字列入力に追加すると、Pythonは有効なPython式として入力を解析しようとします。なぜなら、表示されるエラーが表示されるからです。

int(input(...))を使用する方が意味があります(ただし、ユーザーがコードに非整数を入力したときに発生する例外は処理する必要があります)。これには、が問題の原因となっている入力を受け入れるという利点があります(eval)。

0

あなたはintParsing(とあなたのコードのすべて「のeval()」機能)を交換基本的には、その後、あなたのための解析、簡単な入力を扱う小さなintParsing機能を、書くことができます。

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 
+0

彼は単に 'eval()'の使用を止めますが、大丈夫です。 ... –

+0

もちろん、彼はeval()の使用を止めるべきですが、それはすでに複数回言及されています。 – AddingColor

+1

なぜ新しい手続きを作成するのが理にかなっていないのですか? –

関連する問題