2016-10-02 11 views
0

私は、私はCloud9 IDEでバグを発見したと信じて:SyntaxError at Cloud9 IDE?これはバグですか、何か間違っていましたか?私は、次のコードの構文エラーを取得するよう

for x in optionMenu: 
      print x[0], x[1] 
     action = raw_input ("Please select an action: ") 
     if action == "1": 
      direction = directionMenu() 
      if direction == "East": 
       validAction = True 
       print "You raise the portcullis and enter the palace." 
       room2(character) 
      else: 
       print "You can't go that way!" 
     elif action == "2": 
      characterMenu(character) 
     elif action == "3": 
      if searched_yet1 == False: 
       skill_pass = skillCheck(1, character.search) 
       if skill_pass == True: 
        print "The double portcullis seems moveable with some effort." 
        searched_yet1 = True 
       else: 
        print "You fail to find anything worthy of note. " 
        searched_yet1 = True 
      else: 
       print "You have already attempted that action!" 
     elif action == "4": 
      if listened_yet1 == False: 
       skill_pass = skillCheck(5, character.listen) 
       if skill_pass == True: 
        print "Sounds coming from deep in the palace can be heard every few minutes." 
        listened_yet1 = True 

       else: 
        print "You fail to hear anything worth of note. " 
        listened_yet1 = True 
      else: 
       print "You have already attempted that action!" 

構文エラーが"elif action == "4":で起こります。何か間違っているか、Cloud9 IDEでバグを見つけましたか?私は間隔を調整しようとしました。上記のprint文に誤りがありますか?

編集:ここに掲載され、私はあなたのコードを調べるとバ​​ージョンは、Python 2.7.6で、エラーは、ラインelif action == 4:は、その後4つのスペース2つのタブで

File "/home/ubuntu/workspace/dungeonMap.py", line 63 
    elif action == "4": 
^
SyntaxError: invalid syntax 

答えて

1

先行されています。 Pythonのスペースとタブを混在させるとという非常に悪い考えがあります。また、前のもののようないくつかの行には、インデント用のスペースしか使用していないことがわかります。

この2つのタブは、他のタブと同様にスペースで置き換え、インデントするときにスペースのみを使用するようにIDEを構成します。それが問題を解決するかどうかを確認してください。


もっと見ると、私は今すぐ直接の問題を見る。私はPythonがあなたのエディタにどのように表示されてもタブを8つのスペースとして扱うと信じています。それで、あなたの問題行の2行上の行はelse:ですが、if searched_yet1 == False:行ではなくif action == "1":行になるようにインデントされています。 Pythonではelif action == 4:行がelifとして表示され、対応する前にはifと表示されません。

また、すべてのタブをスペースで置き換え、インデントを正しく表示すると、その問題などが解決されます。

+0

タブとスペースが何かに影響を与えたとは知らなかった!私はこれらのことを聞いたことがありますが、私は分かりませんでした。私のIDEを再構成します – Dragoonknight

+0

インデントがPython構文の非常に重要な部分であることを知らなかったら、あなたはどのようにあなたのコードを今までに書くことができましたか? – Matthias

+0

さて、タブとスペースが別のものであることは分かりませんでした。 – Dragoonknight

関連する問題