2017-12-05 13 views
0

dialogue_b1()という名前の関数内でinput関数を使用して 'dialogue_b1_a()'を呼び出そうとしています。通常dialogue_b1()を呼び出すとプロンプトが表示されますが、beginをタイプした後、continue_b1 ==が始まるとput関数が呼び出されるのではなく、終了コード0で実行されたということだけが示されます。私は間違って何をしていますか?ありがとう。条件付きの後にネストされた関数呼び出しをしないのはなぜですか?

def dialogue_b1(): 
    begin = 0 
    print("You identify as a male.") 
    print("...") 
    continue_b1 = input('Type "begin" to continue.') 
    if continue_b1 == begin: 
     dialogue_b1_a() 
    return 
+0

なぜあなたは、関数の先頭に "= 0を始める" を入れたのですか?あなたはその変数をどこにも使用しておらず、離れてしまっていたとすれば、間違いははるかに明らかになります。 – mkrieger1

+0

私は問題がbeginのデータ型ではないと仮定しましたが、beginはローカルで最初に定義しなければなりませんでした。 – user7847530

+0

'begin = 0'の代わりに' begin = "begin"を使用していればうまくいきました。 – mkrieger1

答えて

0

だから、唯一の文字列にbeginを変更する必要があります。

def dialogue_b1(): 
    begin = 0 
    print("You identify as a male.") 
    print("...") 
    continue_b1 = input('Type "begin" to continue.') 
    if continue_b1 == 'begin': 
     dialogue_b1_a() 
    return 
1

間違って何かがここにあります。あなたの質問でコードを誤って入力したか、間違ったラベル「Python 2.7」を適用しました。投稿したコードをコピーし、beginと入力すると、実際にdialogue_b1_a()を呼び出そうとします。

input()をPython 2.7で使用しないでください。常にraw_input()を使用してください。

input()呼び出しに応じてbeginと入力すると、Python 2.7はユーザーが入力したものを式として評価します。そのため、機能の先頭にbegin=0が必要でした。

このコードをPython 3.xで実行した場合、beginと入力すると、"begin"という文字列がinput()コールから返され、条件が一致しなくなります。その場合、Python 3 input()は常に文字列を返すため、条件は一致しません。

のPython 2.7で補正コード:

def dialogue_b1(): 
    print("You identify as a male.") 
    print("...") 
    continue_b1 = raw_input('Type "begin" to continue.') 
    if continue_b1 == "begin": 
     dialogue_b1_a() 
    return 

やPython 3:

def dialogue_b1(): 
    print("You identify as a male.") 
    print("...") 
    continue_b1 = input('Type "begin" to continue.') 
    if continue_b1 == "begin": 
     dialogue_b1_a() 
    return 
関連する問題