1

私はPythonが初めてで、小さなプログラムを作成したばかりです。「Hello」または「hello」と入力すると「動作中」と表示され、それ以外を入力すると「動作していません」と表示されます。これまでのコードは次のとおりです。

print "Type in 'Hello'"
typed = raw_input("> ")
if (typed) == "Hello" or "hello":
   print "Working"
else:
    print "not working"

コードが機能していません。何を送信しても、「jsdfhsdkfsdhjk」と入力しても、常に「動作中」と表示されます。「または」と「こんにちは」を取り除けば機能しますが、両方を確認したいと思います。スクリプトを機能させるにはどうすればよいですか?

どうもありがとう!!

4

5 に答える 5

13

スタンドアロンの式としてtrue に評価されるかどうかtypedを確認しています (これはそうです)。元の変数と照合するために複数の値を連鎖させることはできません。式が異なるものと等しいかどうかを確認したい場合は、それを繰り返す必要があります。"Hello""hello"

if typed == 'Hello' or typed == 'hello':

または、次のようなもの:

if typed in ['Hello', 'hello']: # check if typed exists in array

または、次のようなもの:

if typed.lower() == 'hello': # now this is case insensitive.
于 2012-08-22T16:35:52.393 に答える
2

if (typed) == "Hello" or "hello":する必要がありますif typed == "Hello" or typed == "hello":

現時点での問題は、or2 つの質問を分離する必要があることです。同じ質問に対する2つの回答を分離するために使用することはできません(これは、あなたが期待していることだと思います)。

そのため、python は「hello」を質問として解釈しようとし、true / false 値にキャストします。「hello」がキャストされるtrueことがあります (理由を調べることができます)。したがって、コードは実際に「if something or TRUE」と言っていますが、これは常にtrueであるため、「working」は常に出力されます。

于 2012-08-22T16:34:30.627 に答える
2

小文字に変換したい場合があるtypedので、確認する必要があるのは 1 つだけです。「HELLO」と入力したらどうなるでしょうか。

typed = raw_input("> ")
if typed.lower() == "hello":
    print "Working"
else:
    print "not working"
于 2012-08-22T16:35:58.913 に答える
2

or(および)の両側の式はand、互いに独立して評価されます。したがって、右側の式は左側の「==」を共有しません。

複数の可能性に対してテストしたい場合は、次のいずれかを行うことができます

typed == 'Hello' or typed == 'hello'

(Hbcdevが示唆するように)、またはin演算子を使用します:

typed in ('Hello', 'hello')
于 2012-08-22T16:36:35.820 に答える
0

あなたは2つの方法でそれを行うことができます(少なくとも)

print "Type in 'Hello'"
typed = raw_input("> ")
if typed == "Hello" or typed == "hello":
   print "Working"
else:
    print "not working"

または、in

print "Type in 'Hello'"
typed = raw_input("> ")
if typed in ("Hello","hello",):
   print "Working"
else:
    print "not working"
于 2012-08-22T16:36:47.317 に答える