2017-02-21 69 views
-1

我想創建一個代碼,其中Python將生成零和九之間的五個隨機數,然後將它們存儲在列表中。我需要程序來允許用戶輸入一個整數然後搜索列表。搜索整數列表

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) 

但是,一旦我讓用戶輸入號碼,它不會搜索列表?

+0

你用什麼版本的Python? ('輸入'在2.6和3.3中的工作方式不同)。 – DyZ

+0

即時通訊使用python 3.6! –

+0

你在哪裏定義了linearSearch? – putonspectacles

回答

-1

有一些問題與您的代碼

  1. 在你要求用戶輸入您不使用任何地方五個號碼createList功能。
  2. 在主函數中,您正在調用createList(),但您並未將其存儲在任何變量中。餘噸應該是這樣的:

    list=createList()

  3. 在可供選擇的主要功能= 2要打印功能本身,而不是你應該做以下:

    print(list)

記住在主函數的開始處聲明列表。因爲如果用戶選擇選項2而沒有選擇1,那麼將會出現錯誤。

  • 你應該在searchList功能通過列表如下:

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

  • +0

    這非常有幫助!謝謝! –

    -1

    首先linearSearch沒有在任何地方定義。假設您已將其定義在某處,則必須將myList轉換爲searchList函數。

    1

    createlist()被創建列表但searchList()不具有基準到它。 您的searchList()未採用任何參數,所以linearSearch()不知道要搜索哪個列表的編號。

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

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