3

私はオンラインチュートリアルからPythonを学んでいます。私の問題は、スクリプトを実行すると、何を入力しても、if go =="kitchen"..という応答が返されることです。

def go_to():
    go = raw_input("Go to? ")

    if go == Kitchen or breakfast:
         print "You rumble down stairs and into the kitchen. Your mom has left some microwaved waffles on the table for you. Your big boy step sits by the counter."
    elif go == "back to bed" or "back to sleep" or bed or sleep:
        print "You hit snooze and roll over."
    elif go == "bathroom" or "toilet" or "potty" or "pee" or "poop" or "take a sh*t" or "take a dump" or "drop a load":
        print "You make a stop at the head first."
        go_to()
    else:
        print "That is not a command I understand."
        go_to()
go_to()
4

6 に答える 6

5

コメントで述べたように、orここでの使用は正しくありません。これ:

go == "kitchen" or "breakfast"

これと同等です:

(go == "kitchen") or "breakfast"

演算子は両方のorオペランドをブール値にキャストします。これにより、次のようになります。

(something) or true

これは常にに減少するためtrue、常にifステートメントを入力します

于 2012-08-02T15:38:12.137 に答える
1

Ignacioが言うように、新しいチュートリアルが必要です。

go == Kitchen or breakfast部分式go == Kitchenまたはのいずれかがにbreakfast評価される場合、式はtrueになりますTrue。これはgo、と同じオブジェクトに評価される場合Kitchen、またはそれらのタイプ__eq__がそれらの同等性を定義するメソッドを定義する場合に発生します。または、がbreakfastではないオブジェクトの場合に発生しますNone

変数にリスト内の値が含まれているかどうかを確認する方法は次のとおりです。

if go in (Kitchen, breakfast):
   # do something

Kitchenまた、コードには変数とが定義されている場所が表示されておらずbreakfast、インデントが正しくないことにも注意してください。

于 2012-08-02T15:38:57.077 に答える
0

私は問題があなたの最初のifステートメントにあると信じています

ほとんどのプログラミング言語では、「または」とだけ言うことはできません。あなたがする必要があるのは、すべての条件に対して「go=="」の部分を繰り返すことです。

if go == Kitchen or go == breakfast:

現在行っているのは、評価(go == Kitchen)して、それが誤りであると判断することです。それからそれは「朝食」を評価していて、それは真を返します。これは「or」ステートメントであるため、if全体がtrueになります。

于 2012-08-02T15:37:28.107 に答える
0

構文

if go == "Kitchen" or "breakfast":

評価の順番が間違っています。goが「kitchen」か「breakfast」かを確認するつもりのようです。ただし、goが「kitchen」であるか、文字列「breakfast」がtrueであるかを確認します。空でない文字列はFalseではないと評価されるため、後者は常に当てはまります。

あなたの意図を説明する直感的な方法は次のとおりです。

if (go == "kitchen") or (go == "breakfast"):

おそらくもっとpythonicあなたも書くことができます:

if go in ["kitchen", "breakfast"]:
于 2012-08-02T15:39:41.963 に答える
0

条件がリストの1つであるかどうかを確認するには、次を使用する必要がありますin。例:

if go in ('Bathroom', 'take a dump', 'have a beep'):
    # do something...
elif go in ('Kitchen', 'Living room'):
    # etc...
else:
    # no idea where to go?

の使用はorあなたが期待することをしません、そして他の投稿で説明されました。

于 2012-08-02T15:39:51.930 に答える
0

あなたのコードが言っていることは、キッチンや朝食に行く場合は、Pythonの場合、キッチンに行くか朝食をとるかを意味します

だから、それは何かか真実のどちらかです。Trueに解決されるため、最初のifステートメントが常に実行されます。あなたはそれを修正することができます if go in ['kitchen', 'breakfast']

于 2021-11-06T03:21:15.283 に答える