1

現在、Python で簡単なテキスト アドベンチャーに取り組んでいます。基本的には、randint で 1 または 2 を選択してから right_wire に割り当て、次に raw_input を wire_choice に割り当ててから、2 つを一致させて目的の結果を提供します。とにかく、私がここで何をしようとしているのかを理解できると確信しています。私はここに近いですか、それとも本当に遠いですか?ありがとう!

    right_wire = randint(1, 2)

    wrong_wire = 0

    if right_wire == 1:
        wrong_wire = 2
    elif right_wire == 2:
        wrong_wire = 1
    else:
        print "ERROR"

    while True:
        print "Which wire do you pull?"
        print
        print "1. The red one."
        print "2. The blue one."
        print
        wire_choice = raw_input('*>>*')

        if wire_choice == 1 and right_wire == 1:
            print "**BOMB DEFUSED**"
            return 'engineering2'
        elif wire_choice == 2 and right_wire == 2:
            print "**BOMB DEFUSED**"
            return 'engineering2'
        elif wire_choice == 1 and right_wire == 2:
            print "**FAILED**"
            return 'death'
        elif wire_choice == 2 and right_wire ==1:
            print "**FAILED**"
            return 'death'
        else:
            print no_understand
4

2 に答える 2

5

だけではない理由:

while True:
    print "Which wire do you pull?"
    print
    print "1. The red one."
    print "2. The blue one."
    print
    raw_input('*>>*')
    if randint(0, 1):
        print "**BOMB DEFUSED**"
        return 'engineering2'
    else:
        print "**FAILED**"
        return 'death'

/!\ raw_input は文字列を返し、戻り値を整数と比較していますが、決して一致しません:

$ python
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1 == "1"
False
于 2013-02-03T17:28:48.693 に答える
4

Python は「強く型付けされた」言語です。テキスト (文字列) を数値 (int) に自動的に変換しません。randint(0, 1)数値をブール値にも変換しません。str(right_write)ただし、またはなどの変換を行うように指示できますint(wire_choice)

数値をブール値に変換するのは少し異なります。Python オブジェクトにはnonzero、オブジェクトが false または true と見なされるかどうかを判断するために、必要に応じて Python が暗黙的に呼び出すメソッドがあります。また、ブール値は のサブクラスでintあるため、整数値を持ちます。bool(randint(0, 1))として、または のような式を使用して、明示的に変換するオプションがまだありますrandint(0, 1) == 0

ソリューションのコーディング方法を正確に説明していないのは、そこからソリューションを取得できると確信しており、コードの表現方法を自分で選択できるためです。

PS非ブールオブジェクトのブール値の特殊なケースに関する詳細情報にリンクしたいと思います。特に、Python では非ブール値の真偽値をテストすることが明確に許可されています。そうすることをお勧めします。または、少なくともGoogle のガイドでは、非ブール値の真の値をテストすることを推奨しています

于 2013-02-03T17:30:30.153 に答える