搜索整数列表

时间:2017-02-21 06:16:05

标签: python list search integer

我正在尝试创建一个代码,其中Python将生成0到9之间的五个随机数,然后将它们存储在列表中。我需要程序允许用户输入一个整数,然后搜索列表。

def main():
    choice = displayMenu()
    while choice != '4':
        if choice == '1':
            createList()
        elif choice == '2':
            print(createList)
        elif choice == '3':
            searchList()
        choice = displayMenu()

    print("Thanks for playing!")


def displayMenu():
    myChoice = '0'
    while myChoice != '1' and myChoice != '2' \
                  and myChoice != '3' and myChoice != '4':
         print ("""Please choose
                        1. Create a new list of 5 integers
                        2. Display the list
                        3. Search the list
                        4. Quit
                        """)
         myChoice = input("Enter option-->")

         if myChoice != '1' and myChoice != '2' and \
            myChoice != '3' and myChoice != '4':
             print("Invalid option. Please select again.")

    return myChoice 

import random

def linearSearch(myList):
target = int(input("--->"))
for i in range(len(myList)):
    if myList[i] == target:
        return i
    return -1


#This is where I need it to ask the user to give five numbers 

def createList():
    newList = []
    while True:
        try:
            num = input("Give me five numbers: ")
            num = [int(num) for num in input().split(' ')]
            print(num)
            if any([num < 0 for num in a]):
                Exception

            print("Thank you")
            break
        except:
            print("Invalid. Try again...")

    for i in range(5):
        newList.append(random.randint(0,9))
    return newList


#This is where the user should be able to search the list

def searchList():
    target = int(input("--->"))
    result = linearSearch(myList,target)
    if result == -1:
        print("Not found...")
    else:
        print("Found at", result)

但是,一旦我让用户输入号码,它就不会搜索列表?

3 个答案:

答案 0 :(得分:1)

createlist()正在创建一个列表,但是searchList()没有对它的引用。 您的searchList()没有接受任何参数,因此linearSearch()不知道要搜索该号码的列表。

linearSearch(),可以更好的方式定义:

def linearSearch(myList,target):
    for i,j in enumerate(myList):
        if target == j:
            return i
        else:
            return -1

答案 1 :(得分:-1)

首先,linearSearch未在任何地方定义。假设您已在某处定义了它,则必须将 myList 传递给 searchList 函数。

答案 2 :(得分:-1)

您的代码存在一些问题

  1. 在createList函数中,您要求用户输入您未在任何地方使用的五个数字。
  2. 在main函数中,您调用createList(),但不将其存储在任何变量中。我应该是这样的:

    list=createList()

  3. 在选择主要功能= 2中,您正在打印功能本身,而应该执行以下操作:

    print(list)

  4. 请记住在main函数的开头声明list。因为如果用户在没有选择1的情况下选择选项2,则会出现错误。

    1. 您应该在searchList函数中传递list,如下所示:

      def searchList(list): target = int(input("--->")) try: result=list.index(target) print("Found at", result) except: print("Not found")