1

ローカル変数とグローバル変数に苦労しています。

私はこれをしていました:

def SomeFunc(Input):
    if Input == 1:
        Input = "True"
    elif Input == 0:
        Input = "False"

RawInput=int(raw_input("Input 1 or 0: "))
SomeFunc(RawInput)
print str(RawInput)

そしてそれはこれを示しました:

>>> def SomeFunc(Input):
    if Input ==1:
        Input = "True"
    elif Input ==0:
        Input = "False"

>>> RawInput = int(raw_input("Input 1 or 0: "))
Input 1 or 0: 1
>>> SomeFunc(RawInput)
>>> print str(RawInput)
1

関数で入力が str に変換されるようにするにはどうすればよいですか?

4

4 に答える 4

4

入力はint不変オブジェクトです。つまり、どこでも変更できません。ただし、別のものに割り当てることができます。Python で難しいことの 1 つは、すべてが単なる参照であることを学習することです。何かに割り当てるときは、参照を変更するだけです。変数は、ボックスに入る文字列と考えてください。変数に代入するときは、その文字列を特定のボックスに入れます。その変数を別のものに割り当てると、文字列が移動するボックスが変更されます。もちろん、実際に追加するときは、文字列ではなくボックスの内容を追加します (これは少し混乱します)。C でのプログラミングに慣れている場合は、すべてが自動的に逆参照されるポインターのようなものです (代入を行う場合を除く)。

じゃあ何をすればいいの?最も簡単なのはreturn、関数の値です。

def some_func(inpt):
    if inpt == 1:
        return "True"
    elif inpt == 0:
        return "False"
    else:
        raise ValueError("WHAT IS THIS GARBAGE? I SAID 0 OR 1!!!!") # ;^)

これで、関数を次のように呼び出すことができます。

processed_input = some_func(rw_inpt)

補足として、関数は次のように要約できます。

def some_func(inpt):
    return str(bool(inpt))

また

def some_func(inpt):
    return "True" if inpt else "False"

これらは両方ともパスします ("True"ユーザーが 0 以外の整数を入力した場合は戻ります)。ユーザーに「2」などを入力させないようにするには、次のようにします。

def some_func(inpt):
    return {1:"True",0:"False"}[inpt]

しかし、私はそれをお勧めしません...

于 2012-07-13T02:29:17.280 に答える
1

注:これを行うことができます:print bool(int(raw_input("Input 1 or 0: ")))

それを行うためのよりPython的な方法は次のようになります:

def some_func(x):
    if x == 1:
        return "True"
    elif x == 0:
        return "False"

x = int(raw_input("Input 1 or 0: "))
x = some_func(x)
print x

ただし、sを使用したい場合はglobal、このように実行できますが、これは本当にハッキーであり、Pythonが推奨する優れたコーディング手法の1つではありません。

def some_func():
    global x
    if x == 1:
        x = "True"
    elif x == 0:
        x = "False"

x = int(raw_input("Input 1 or 0: "))
some_func()
print x

その他の注意事項:ブルティンのような名前は使用しないでください。InputそしてRawInputそれは物事を不明確にし、すべてを混乱させるからです。

于 2012-07-13T02:33:02.273 に答える
1

基本的に、引数を参照渡しにしたいのですが、それは基本的なデータ型に対して Python がどのように機能するかではありません。これを行うpythonicの方法は次のとおりです。

def some_func(input):
    if input == 1:
        return "True"
    elif input == 0:
        return "False"

その後

raw_input = some_func(raw_input)
于 2012-07-13T02:30:14.507 に答える
0

関数で入力が str に変換されるようにするにはどうすればよいですか?

def SomeFunc(Input):
    as_string = str(Input)
    if Input == '1':
        Input = "True"
    elif Input == '0':
        Input = "False"

TruePython には、値を含むネイティブのブール型があることに注意してくださいFalse。の整数値をInput単独で条件として使用できます。

于 2012-07-13T02:29:30.593 に答える