3
    if "sneak" or "assasinate" or "stealth" not in action:
        print"...cmon, you're a ninja! you can't just attack!"
        print "STEALTH, SNEAK ATTACKS, ASSASINATIONS!"
        print "The gods decide that you have come too close to loose now."
        print "they give you another chance"
        return 'woods'
    else:
        print "You throw a ninja star at a near by tree to distract the warlord,"
        print "you take out his legs, get him on the ground and have your blade to his neck"
        print "You take off his mask to stare into his eyes as he dies, and realise, it's your father."
        return 'the_choice'

これは私が問題を抱えているコードのビットです。私はpythonが初めてで、raw_inputで指定された複数の単語を識別する方法を知る必要があります. その ^ が機能しない理由がわかりませんが、これは機能します:

action = raw_input("> ")

if "body" in action:
    print "You hit him right in the heart like a pro!"
    print "in his last dying breath, he calls for help..."
    return 'death'

どんな助けでも大歓迎です、どうもありがとう

4

3 に答える 3

2

組み込み関数を使用できますany()

any(x not in action for x in  ("sneak","assasinate","stealth"))
于 2012-11-17T23:19:07.403 に答える
2

ここには 2 つの問題があります。

  1. 空でない文字列は本質的に真実です
  2. の結合性orは、あなたが書いたものとは少し異なります。

これを確認する最も簡単な方法は、最初のブランチのみを使用することです。

if "sneak":
   print "This was Truthy!"

if 句に括弧を追加すると、次のように解決されます (左から右に読み取るため:

if ("sneak" or "assasinate") or ("stealth" not in action)

使用する@AshwiniChaudharyの提案anyは良いものですが、明確にするために、次のことを行うのと同等の結果が得られます。

"sneak" in action or "assasinate" in action or "stealth" in action

ちなみに、完全一致を探している場合は、次のこともできます

if action in ("sneak", "assasinate", "stealth")
于 2012-11-17T23:34:38.283 に答える
0

助けてくれてありがとう、しかし私はそれを理解しました、これが私がしたことです:

    action = raw_input("> ")

    if "sneak" in action:
        print "You throw a ninja star at a near by tree to distract the warlord,"
        print "you take out his legs, get him on the ground and have your blade to his neck"
        print "You take off his mask to stare into his eyes as he dies, and realise, it's your father."
        return 'the_choice'
    elif "assasinate" in action:
        print "You throw a ninja star at a near by tree to distract the warlord,"
        print "you take out his legs, get him on the ground and have your blade to his neck"
        print "You take off his mask to stare into his eyes as he dies, and realise, it's your father."
        return 'the_choice'
    elif "stealth" in action:
        print "You throw a ninja star at a near by tree to distract the warlord,"
        print "you take out his legs, get him on the ground and have your blade to his neck"
        print "You take off his mask to stare into his eyes as he dies, and realise, it's your father."
        return 'the_choice'
    else:
        print"...cmon, you're a ninja! you can't just attack!"
        print "STEALTH, SNEAK ATTACKS, ASSASINATIONS!"
        print "The gods decide that you have come too close to loose now."
        print "they give you another chance"
        return 'woods'
于 2012-11-20T00:48:58.760 に答える