6

1つのパラメーターを受け取る関数、shut_downを記述します(好きなものを使用できます。この場合、s文字列に使用します)。

shut_down関数は、、、、または引数を取得したとき、および、、、またはを"Shutting down..."取得したときに戻る必要があります。それらの入力以外のものを取得した場合、関数は"Yes""yes""YES""Shutdown aborted!""No""no""NO""Sorry, I didn't understand you."

これまでに書いたコードは以下のとおりです。エラーが発生します。たとえば"No"、引数として指定された場合、期待どおりに返されません"Shutdown aborted!"

def shut_down(s):
    if s == "Yes" or "yes" or "YES":
        return "Shutting down..."
    elif s == "No" or "no" or "NO":
        return "Shutdown aborted!"
    else:
        return "Sorry, I didn't understand you."
4

9 に答える 9

11

これ:

s == "Yes" or "yes" or "YES"

これと同等です:

(s == "Yes") or ("yes") or ("YES")

Trueでない文字列はTrue.

s代わりに、次のように各文字列を個別に比較します。

(s == "Yes") or (s == "yes") or (s == "YES")  # brackets just for clarification

最終的には次のようになります。

def shut_down(s):
    if s == "Yes" or s == "yes" or s == "YES":
        return "Shutting down..."
    elif s == "No" or s == "no" or s == "NO":
        return "Shutdown aborted!"
    else:
        return "Sorry, I didn't understand you."
于 2013-03-01T02:53:32.347 に答える
5

いくつかの方法でそれを行うことができます:

if s == 'Yes' or s == 'yes' or s == 'YES':
    return "Shutting down..."

または:

if s in ['Yes', 'yes', 'YES']:
    return "Shutting down..."
于 2013-03-01T02:55:01.693 に答える
2

SOへようこそ。答えを順を追って説明します。

s = raw_input ("Would you like to shut down?")

これは、ユーザーがシャットダウンするかどうかを尋ねます。

def shut_down(s):
    if s.lower() == "yes":
        print "Shutting down..."
    elif s.lower() == "no":
        print "Shutdown aborted!"
    else:
        print "Sorry, I didn't understand you."

これはおそらくあなたにとって新しいことです。文字列がある場合、.lower()すべての入力sが小文字に変更されます。これは、すべての可能性のリストを与えるよりも簡単です。

shut_down(s)

これにより、関数が呼び出されます。

于 2013-03-01T02:57:12.790 に答える
2
def shut_down(s):
    return ("Shutting down..." if s in("Yes","yes","YES")
            else "Shutdown aborted!" if s in ("No","no","NO")
            else "Sorry, I didn't understand you.")

GordonsBeard のアイデアは良いものです。おそらく「yEs」や「yES」などは許容基準です。
次に、この場合は次のように提案します。

def shut_down(s,d = {'yes':"Shutting down...",'no':"Shutdown aborted!"}):
    return d.get(s.lower(),"Sorry, I didn't understand you.")
于 2013-03-01T02:58:12.887 に答える
1

これが仕様に正確に適合しないことはわかっていますが、これは別の一般的なオプションであり、さらにいくつかの順列をキャッチします。

def shut_down(s):
    s = s.upper()
    if s == "YES":
        return "Shutting down..."
    elif s == "NO":
        return "Shutdown aborted!"
    else:
        return "Sorry, I didn't understand you."
于 2013-03-01T02:58:36.587 に答える
0

私は Python プログラマーで、Codecademy を修了しています。あなたが問題を抱えていることがわかりました。私の答えを教えてください。それは完璧に動作します

def shut_down(s):
    if s == "yes":
        return "Shutting down"
    elif s == "no":
        return "Shutdown aborted"
    else:
        return "Sorry"
于 2016-03-19T00:14:03.970 に答える