-1

だから私はゲームをコーディングしようとしていて、レベルのさまざまな領域を接続しようとしています.コードのこの部分は、ユーザーが選択できるようにすることになっていますが、ターミナルは私にこのエラーコマンドを与え続けます: "expected an indented block".

すべてのタブを 4 つのスペースに、またはその逆に置き換えようとしましたが、エラーは消えません。

ちなみに、関数を定義した後、その後の各行は4つのスペースまたはタブでインデントされることは知っていますが、これが私の最初の質問であり、ここでそれを行う方法がわかりませんでした.


def entry_hall():   
    first = raw_input("Go upstairs\nGo forwards\nGo left\nLeave\n:")
    if first == "Go upstairs" or "upstairs":
        print "Walking up the stairs" 
        import Upstairs_hallway.py
    elif first == "Go forwards" or "forwards":
        pass
    elif first == "Go left" or "left":
        pass
    elif first == "Leave":
        print """
You're a cop. You are not a baby. Do something else
""" 
        #restart the script

entry_hall()
4

3 に答える 3

1

インデントが一定であることを確認してください。

def entry_hall():   
    first = raw_input("Go upstairs\nGo forwards\nGo left\nLeave\n:")

    if first in ["Go upstairs", "upstairs"]:
        print "Walking up the stairs" 
        import Upstairs_hallway
    elif first == "Go forwards" or "forwards":
        pass
    elif first == "Go left" or "left":
        pass
    elif first == "Leave":
        print "You're a cop. You are not a baby. Do something else" 
        #restart the script

entry_hall()

また、if first == "Go upstairs" or "upstairs"なかなかうまくいきません。そのステートメントは次のように評価されます。

if (first == "Go upstairs") or "upstairs"

最初の条件 はまたはにfirst == "Go upstairs"評価されますが、2 番目の条件は常に に評価されます。ステートメントも使用しているため、最初の条件は常に と評価されます。TrueFalse"upstairs"TrueorTrue

リストを使用すると、この問題が解決されます。

if first in ["Go upstairs", "upstairs"]:

また、Python では、ステートメントは拡張子importがあることを想定していません。.pyファイル名を指定するだけです:

import Upstairs_hallway
于 2012-08-26T18:55:16.007 に答える
0

の後の各コード行の後に、さらに 4 文字を追加するだけですdef

def entry_hall():   
    first = raw_input("Go upstairs\nGo forwards\nGo left\nLeave\n:")
于 2012-08-26T18:54:33.983 に答える
0

defステートメントの配置が悪いのは、Markdownに適切に貼り付ける方法がわからないためだと言うので、私の元の答えは必要ありません。

ただし、別の問題があります。あなたのifステートメントは間違っています。Swap if s == 'first' or 'second':for if s in ['first', 'second']:— 前者は true と'second'評価されるため、常に true になります。

于 2012-08-26T18:57:25.433 に答える