2016-09-22 3 views
1

コード:(Pythonの3.5.2)コードユーザによってなされたリストにある単語の位置を検索する方法

  • コードを達成しようとしている何

    import time 
    import sys 
    
    
    def Word_Position_Finder(): 
        Chosen_Sentence = input("Make a simple sentence: ").upper() 
        print(Chosen_Sentence) 
        Sentence_List = Chosen_Sentence.split() 
        if len(Chosen_Sentence) == 0: 
         print("Your Sentence has no words! Restarting Program.") 
         time.sleep(1) 
         Restarting_Program()   
        print(Sentence_List) 
        time.sleep(1) 
        Users_Choice = input("Do you want to make a new sentence (press 1) or keep current sentence (press 2): ") 
        if Users_Choice == "1": 
         print("Restarting Program.") 
         time.sleep(1) 
         Restarting_Program()   
        elif Users_Choice == "2": 
         #Lines Under Here Don't Work As Wanted 
         print("'" + Chosen_Sentence + "'" + ". This is your sentence.") 
         Chosen_Word = input("Which word in your sentence do you want to find the position of? ").upper() 
         for Users_List in Sentence_List: 
          if Users_List == Chosen_Word.upper(): 
           print("Your word appears in the number " + str((Users_List.index(Chosen_Word) +1)) + " slot of this sentence") 
         #Lines Above Here Don't Work As Wanted 
        else: 
         print("That isn't a valid answer") 
         Choose_To_Restart() 
    
    def Choose_To_Restart(): 
        time.sleep(1) 
        loop = input("Want to try again, Y/N?") 
        if loop.upper() == "Y" or loop.upper() == "YES": 
         print("Restarting Program") 
         time.sleep(1) 
         Restarting_Program() 
        elif loop.upper() == "N" or loop.upper() == "NO": 
         print("Ending Program") 
         time.sleep(1) 
         sys.exit("Program Ended") 
        else: 
         print("Ok.") 
         time.sleep(1) 
         sys.exit("Program Ended") 
    
    
    def Restarting_Program(): 
        Word_Position_Finder() 
    
    
    Word_Position_Finder() 
    

    上記の文字列をユーザーが作成し、リストに変換し、ユーザーにこの文字列に満足しているかどうかを尋ね、リスト内のどの単語を入力してその位置を知りたいかを尋ねるユーザーリストのその選択された単語の

質問私は2つのハッシュタグを入れているコードで

  • 、「この行の上#このコードは動作しません」「この行の下に#このコードは動作しません」と。他のすべては問題なく、変更する必要はありません。これらの4つの行でユーザーに単語を選択させて、選択した単語の場所を見つけるためにユーザーが事前に作成したリストをループします。しかし、コードが現在行っているのは、4行目になると、ユーザーに予約済みのリストで検索したい単語を尋ね、常に印刷します。 "print("あなたの単語は数字 "1" "この文章のスロット")。このコードは、常にスロット1に入っていると言いますが、それ自体を再起動します。望んでいたとして、それが動作するように取得しようとしている。あなたは、特に変数名について少しのpython pep8をお読みください脇に全く関係のないよう

答えて

0
このラインで

print("Your word appears in the number " + str((Users_List.index(Chosen_Word) +1)) + " slot of this sentence") 

あなたは文の単語のにChosen_Wordのインデックスを取得しようとしています。あなたは文章の中のインデックスを望んでいます。問題は、Chosen_Wordが複数回出現した場合でも、

print("Your word appears in the number " + str((Sentence_List.index(Chosen_Word) +1)) + " slot of this sentence") 

が動作しないことです。私も1 上位コールが削除されたことを、

for i, Users_List in enumerate(Sentence_List): 
    if Users_List == Chosen_Word: 
     print("Your word appears in the number " + str(i+1) + " slot of this sentence") 

注: は、だから、列挙でループを再公式化することをお勧めします。単語が入力されると、すでにのアッパーが呼び出されました。

単語がセンテンスに含まれていないときは、出力が得られません。この場合、特別な出力を追加することができます。

+0

ええと、これは私が欲しかったのとまったく同じです。私が間違っていたところを私に見せてくれてありがとう、将来の目的のためにこれを振り返ることができます。ほんとありがと! – Potato

2
normalized_list = [word.upper() for word in Sentence_List] 
try: 
    index= normalized_list.index(Chosen_Word.upper()) 
except: 
    print "Not Found! %s NOT in %s"%(Chosen_Word,Sentence_List) 
else: 
    print "%s @ %s"%(Chosen_Word, index) 

...

+0

変数名の呼び出しが良好です。大文字は通常クラス用に予約されています。 – af3ld

0
if Users_List == Chosen_Word.upper(): # <-- .upper() with Choosen_word 
    ..something.. str((Users_List.index(Chosen_Word) +1)) # <-- without ".upper()" 
をこれらの4行210

両方の場所で一貫性を持たせます。大文字小文字を区別しない/機密検索が必要な場合には、.upper()を追加/削除します。

0

これにより、リスト内の単語の位置がわかります。コードに対して簡単に変更できます。これはインデックスであり、そしてあなたがより多くの人の表現を望んでいた場合は0からPythonのスタートでは、インデックス、ない1は、ちょうどこのような数に1を追加することを

Users_List = ['foo', 'boo', 'myword', 'fdjasi'] 
Chosen_Word = 'myword' 
word_index = 0 
for word in Users_List: 
    if word == Chosen_Word: 
     print("Your word appears in the number " + str((word_index)) + " slot of this sentence") 
    else: 
     word_index += 1 

注意。

Users_List = ['foo', 'boo', 'myword', 'fdjasi'] 
Chosen_Word = 'myword' 
word_index = 0 
for word in Users_List: 
    if word == Chosen_Word: 
     print("Your word appears in the number " + str((word_index + 1)) + " slot of this sentence") 
    else: 
     word_index += 1 
関連する問題