0

基本的に、Python でタスクを設定しています。帰属メッセージ内で、爆弾、核、テロリスト、ゴードン ブラウンの 4 つのキーワードを検索することです。次に、それが「 SAFE」メッセージか「UNSAFE 」メッセージかを出力する必要があります。

これまでのところ、これは私が得たものです(私はPythonの初心者です.私はまだ言語を学んでいます.):

keyWord = "bomb"
keyWord1 = "nuclear"
keyWord2 = "terrorist"
keyWord3 = "gordon brown"

def textSearch():
    message = input("Input a message: ")
    if message == keyWord + keyWord1 + keyWord2 + keyWord3:
        print("This is message is UNSAFE!")
    else:
        print("This is a SAFE message.")

textSearch()

助けてください!

単語の 1 つだけを入力すると機能します。しかし、キーワードでメッセージ全体を検索しようとするとうまくいきません。

4

3 に答える 3

0

あなたは現在、特定のメッセージを探しています:

「爆弾核芸術テロリスト ゴードン・ブラウン」

使用したいのはin、文字列内の部分文字列を見つけるものです。各キーワードでこれを行います。

if keyWord in message:
    #keyWord exists in message

キーワードをリストに入れると簡単になります。次に、それらをループできます。

keywords = ["bomb", "nuclear", "terrorist", "gordon brown"]

for keyword in keywords:
    if keyword in message:
        #Bad message!

リスト内包表記とany()関数を使用すると、上記と同じことを 1 行で実現できます。

bad = any(keyword in message for keyword in keywords)

または、部分文字列の場所で何かをする必要がある場合find()は、最初に一致した場所へのインデックスを返す whichを使用できます。

position = message.find(keyword) 
if position > -1:
    #Bad message
于 2013-01-05T15:44:15.880 に答える
0
message == keyWord + keyWord1 + keyWord2 + keyWord3

これはmessage、'bombnuclearterroristgordon brown' と正確に等しい場合に True になります。inおそらく、この演算子を使用してメンバーシップを確認したいと思うでしょう。

keyWord in message or keyWord1 in message or keyWord2 in message or keyWord3 in message

…これは明らかに面倒ですが、Python には優れた代替手段があります。個々の名前ではなく、キーワードのリストを作成することから始めます。

keyWords = ["bomb", "nuclear", "terrorist", "gordon brown"]

次に、リスト内包表記を使用します。

if [keyWord in message for keyWord in keyWords]:
    …
于 2013-01-05T15:47:01.780 に答える
0

次のように「禁止」キーワードのリストを定義できます。

keywords = ["bomb", "nuclear", "terrorist"]

そして、それらを反復して、次のようにテキストに含まれているかどうかを確認できます。

for keyword in keywords:
    if keyword in message:
        print "unsafe"
        break

breakいずれかの最初の出現が見つかった後、キーワードの反復を停止するために使用されています。

次のようなリスト内包表記で行うこともできます。

if [keyword in message for keyword in keywords]...

しかし、Python初心者のあなたにとっては、前者の解決策の方が理解しやすいと思います。

于 2013-01-05T15:47:20.183 に答える