2017-03-29 7 views
1

xsという名前のリスト内の特定の番号の繰り返しをチェックする関数を構築しました。 Vは、繰り返しの確認のための番号です。数値が2回以上出現する場合はTrueを返す必要があり、存在しない場合はFalseを返す必要があります。Python-リピート機能で失敗したテストケースを修正するにはどうすればよいですか?

入力xs = [1,2,1] v = 1のテストケースに失敗しました。この関数はTrueを返す必要がありますが、私のコードはFalseを返しています。私はどこが間違っているのか分かりますか?ここで

は私の現在のコードです:

def has_repeat(xs, v): 
    count=0 
    for num in range(len(xs)): 
     if num == v: 
      count+=1 
    if count>1: 
     return True 
    else: 
     return False 
+0

は '範囲のnumの(LEN(XS))'だけのようなリストを返していない '[0、1、2]'(または '[1、 2、3] '、確信していません)0からxsの長さの範囲が3になっているので3ですか? これは、 '[0、1、2]'を繰り返しチェックして 'v'と照合していることを意味し、' num == v'を一度だけヒットします。 – Dillanm

+0

私はそれを続けるようになる?私はrange(len())を使用することで、リスト全体を調べると考えました。 – kg123

+0

いいえ、あなたは 'num in xs'をする必要はないと思います。私にはチェックさせていただきます。 – Dillanm

答えて

2

あなたが実際にリストの長さの範囲ではなく、リスト内の項目を反復処理しています。

range関数は、0(デフォルト)から指定した数のリストを返します。この場合は3(包括的ではありません)です。例としてPython documentation.

を参照してください、あなたはしようとした場合:何をすべきことはやる

for num in range(len(xs)) 

するのではなく、ある[0, 1, 2]

l = [1, 2, 3] 
print(range(len(l))) 

それがプリントアウトされます

for num in xs: 
あなたが追加おいしいボーナスとしてPyFiddle here

でそれを試すことができる210

、あなたは必要がなくなり、その数の発生がリストにあるどのように多くのチェック項目のリストに.countメソッドを使用するために、これを変更することができますそうように、全くリストを反復する:

count = xs.count(v) 
+1

ありがとうございました!それはうまくいった! – kg123

関連する問題