2016-03-27 15 views
-2

whileループを使用して、リスト内の数字の位置を見つける必要があります。番号がリストにない場合は、「リストにない」と表示されます。これは私がこれまで行ってきたことですが、数字を入力した後、リストにあるかどうかは何も表示されません。whileループでリスト内の位置を見つける

myList = [1,3,5,7,9,11,13,15,17,19] 
i = 0 
x = input("Enter a number") 
while i < len(myList): 
    if i == x: 
     print("In position: ",i) 
    else: 
     i == i+1 
+0

なぜこのループを使用する必要がありますか?この作業を行うのは正しい方法ではありません。 – TigerhawkT3

+0

そしてインデックスが見つかるとまだ無限になります:) – schwobaseggl

+0

私はforループを使ってこれを行う方法を知っていますが、私のクラスではwhileループを使ってそれらについて学ぶのに役立ちます。理由を聞かないでください! –

答えて

4

コードに複数の問題があります。まず、myListのインデックスに使用しようとしていると思われるカウンタのiを、要素自体と混同しています。あなたはどこにでもmyListのインデックスを作成していません。第二に、入力を数字に変換することは決してありません。myListのすべてが数字です。第3に、=で再割り当てする代わりに、ii+1と比較すると、==になります。

myList = [1,3,5,7,9,11,13,15,17,19] 
i = 0 
x = int(input("Enter a number")) 
while i < len(myList): 
    if myList[i] == x: 
     print("In position: ", i) 
    else: 
     i = i+1 # i += 1 

最も明白な問題は、しかし、これはlistでオブジェクトを見つけるために間違った方法であるということです。 indexメソッドを使用してください:

myList = [1,3,5,7,9,11,13,15,17,19] 
x = int(input("Enter a number")) 
try: 
    print("In position: ", myList.index(x)) 
except ValueError: 
    pass 
+0

OPが最初のインスタンスだけを検索したい場合、OPが見つかるとループから切り離すことができます。いくつかの 'found'フラグが必要なので、リストを反復して、見つからないメッセージを出力するかどうかをチェックします。 – Reti43

関連する問題