如何阻止不需要的消息?

时间:2016-03-11 16:34:30

标签: python arrays loops indexing

我的代码一直显示不需要的消息:

#Initializes variable to search array and gets user input
search = str(input('What is a dealer name?'))
#loop to perform search
for index in range(0,array):
#Outputs for search, depending on conditions 
    if (name[index]) == search:
        print(sales[index])
        print(comm[index])
    else:  
        print('Error') 

目标是搜索名称,然后显示该名称的销售和佣金。如果没有名称,则应显示"错误。"

然而,结果就是这样:

What is a dealer name?j
1
0.05
Error

为什么错误一直出现?

3 个答案:

答案 0 :(得分:0)

对于循环中的每个元素,您要查看该元素是否匹配,如果不匹配,则打印Error。相反,如果在循环的所有迭代后没有找到匹配项,则需要打印Error

使用列表的.index方法在数组中找到索引可能会更好。如果你要搜索的东西不存在,它会引发ValueError,所以你也需要处理它:

try:
    idx = name.index(search)
    print(sales[idx])
    print(comm[idx])
except ValueError:
    print('Error')

答案 1 :(得分:0)

我假设您只会找到一个结果,在这种情况下,您可以使用for的子句:

#Initializes variable to search array and gets user input
search = str(input('What is a dealer name?'))
#loop to perform search
for index in range(0,array):
#Outputs for search, depending on conditions 
    if (name[index]) == search:
        print(sales[index])
        print(comm[index])
        break
else:  
    print('Error') 

答案 2 :(得分:0)

你不想搜索数组,它会很慢。最好将使用字典。因为,您不必迭代它,搜索速度会更快。

#Initializes variable to search array and gets user input

dealerSales = {}
dealerComm = {}

dealerSales["DAVID"] = 50
dealerComm["DAVID"] = 0.05

dealerSales["GON"] = 100
dealerComm["GON"] = 0.01

search = raw_input('What is a dealer name?').strip()

if search in dealerSales:
    print dealerSales[search]
    print dealerComm[search]
else:
    print "Error"

输出

What is a dealer name? GON
100
0.01

What is a dealer name? DAVID
50
0.05

What is a dealer name? JOHN
Error