我正在尝试创建一个代码,其中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)
但是,一旦我让用户输入号码,它就不会搜索列表?
答案 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)
您的代码存在一些问题
在main函数中,您调用createList(),但不将其存储在任何变量中。我应该是这样的:
list=createList()
在选择主要功能= 2中,您正在打印功能本身,而应该执行以下操作:
print(list)
请记住在main函数的开头声明list。因为如果用户在没有选择1的情况下选择选项2,则会出现错误。
您应该在searchList函数中传递list,如下所示:
def searchList(list):
target = int(input("--->"))
try:
result=list.index(target)
print("Found at", result)
except:
print("Not found")