2017-09-10 3 views
1

안녕하세요, 파이썬에 대한 새로운 글은 무엇을 하려는지, 나는 아래 목록에 있습니다.선형 검색 -리스트와 정수를 매칭

length = len(x) 
c = input("Enter a no\n") 

for i in range (length): 
    if x[i] == c: 
     print ("Found at position ", i) 
    else: 
     print("not found") 

및 출력 오전 수신 :

x= [1,2,3,4,5,6,7,8,9] 

여기 내 파이썬 코드입니다. 내가 알아 낸 것을 내 거의 약간의 지식을 가진 자

Enter a no 
2 
not found 
not found 
not found 
not found 
not found 
not found 
not found 
not found 
not found 

때마다 루프없이 자사의 부족으로 인해 다른 부분으로 이동 목록과 사용할 수없는 경우 아무 검사를 필요 없기 때문에 찾을 수없는이 여러 일어나고있다 적절한 beak 명세서 하지만 x [i]가 인 경우 그 결과가 Found at position 1이되어야한다는 것을 알 수 없습니다. 나는 어딘가에 if c in x[i]을 사용할 필요가 있지만 읽을 수는 없다. 손에 나는 코드를 다시 썼다.

def ls(): 
    t = int(input("Enter your search no \n")) 
    for i in x: 
     if i!= t: 
      continue 
     print("Your value is present in ") 

     break 
    else: 
     print ("parrrrrrrrrrr") 

ls() 

모두 잘 작동합니다. 그것조차 입력을 찾을 수 없습니다 보여주는 이유는 첫째 프로그램

  • 목록
  • X의 C는 [I]가 입력 된 부분에 존재 : 내가 알고 얻을 수 있다면 그것은 도움이 될 것입니다 같은 문제가 내 알고 당 (지금은 아무 의미가 없습니다)도 작동해야합니다 그것은 작동해야합니다
  • 그것은 정수 대 대 목록의 경우 다음 내 두 번째 코드가 작동하는 방법 - rigt 방법은 선형 수색.
+0

문제는 t이다 hat'str()'과'int()'를 비교해 보자. 라이너 검색에는 O (n)이 있지만 목록이 정렬되어 있으면 O (log n)와 함께 [bisect] (https://docs.python.org/2/library/bisect.html)를 사용할 수 있습니다. – RedEyed

+0

wtf : 입력이 문자열을 사용하는 것을 잊어 버렸습니다. 많은 감사와 o (n) 세부 정보를 설명 할 수있는 링크가 있습니다. 고마워요 @ VadymStupakov –

+0

Google에서 'big o notation'을 (를) 입력하십시오. – RedEyed

답변

0
  1. 입력이 당신에게 str 객체를 반환하고 암시 적 변환없이 int 객체와 비교, 그래서 표현은 항상 False을 할 수 있기 때문에. 당신이 내 의견에 암묵적으로 int

가장 우아한 방법을 입력 변환하기 때문에

  • x가리스트 작품이다 c in x하지만 x[i]
  • 2 코드가 작동 귀하의 경우 정수입니다 :

    입력이 정수로 convertable되지 않은 경우
    c = input("Enter a no\n") 
    items = [1,2,3] 
    print(items.index(int(c)) if int(c) in items else 'Not found') 
    

    그리고 물론 는 ValueError를 잡을 것을 잊지 말아

  • +0

    예. 저는 그 때 vadym @을 언급했을 때, 고마워했습니다. –

    +0

    @SubhaSaha, 좀 더 구체적인 설명으로 내 대답을 업데이트했습니다. –

    +0

    자세한 답변과 가치 오류 지점을 언급 해 주셔서 감사합니다. 최근에 나는 오류 처리 개념을 검토했습니다. def thankyou() : @OlegRybalchenko :} –