【发布时间】:2015-04-20 08:09:51
【问题描述】:
我目前正在尝试制作一个包含分数列表及其标题的模块,并尝试从列表中找到得分最高的一个。我的代码有时似乎可以工作,而有时却不行。这只是 python 2 中的一个简单的比较模块,但我无法让它工作。
编辑: 所以基本上输出的格式应该是它所在的命令 sec 以及列表中的最高数字。但实际输出是“else none”,如果整个列表没有增加或减少,就会弹出。
实际输出:“else none”
预期输出:what_is_cmds 100.0
similarity_percent_lst = ["who_is_cmds", "50.0", "when_is_cmds", "15.0","what_is_cmds", "100.0", "where_is_cmds", "50.0", "personal_info_cmds", "33.33333333333333", "personal_emotion_cmds", "20.0", "personal_emotion_cmds", "40.0", "bye_cmds", "33.33333333333333", "time_cmds", "100.0", "time_cmds", "60.0", "time_cmds", "75.0", "time_cmds", "50.0", "time_cmds", "50.0", "time_cmds", "100.0", "time_cmds", "33.33333333333333", "time_cmds", "33.33333333333333", "time_cmds", "33.33333333333333", "time_cmds", "33.33333333333333", "time_cmds", "33.33333333333333", "time_cmds", "50.0", "date_cmds", "40.0", "date_cmds", "66.66666666666666", "date_cmds", "66.66666666666666", "date_cmds", "50.0", "date_cmds", "33.33333333333333", "date_cmds", "33.33333333333333", "date_cmds", "33.33333333333333", "date_cmds", "33.33333333333333", "date_cmds", "33.33333333333333", "date_cmds", "33.33333333333333", "date_cmds", "33.33333333333333", "weather_cmds", "50.0", "weather_cmds", "66.66666666666666", "weather_cmds", "33.33333333333333"]
biggest_percent_similarity = 50.0
biggest_percent_cmd_sec = "who_is_cmds"
# GETS THE BIGGEST OUT OF ALL THE ONES THAT WERE SIMILAR AND MAKES THAT THE FINAL CHOSEN COMMAND.
if len(similarity_percent_lst) > 2:
for each_number in range(3, len(similarity_percent_lst),2):
# if the n command in the similarity list is more than the n-1 command in the similarity list then this executes.
if (similarity_percent_lst[each_number] > biggest_percent_similarity) == True:
print "\n" + "similarity_percent_lst[each_number] > biggest_percent_similarity"
print similarity_percent_lst[each_number] + ">" + str(biggest_percent_similarity)
print "biggest_percent_similarity BEFORE: ",biggest_percent_similarity,str(each_number)
biggest_percent_similarity = float(similarity_percent_lst[each_number])
biggest_percent_cmd_sec = similarity_percent_lst[each_number - 1]
print "biggest_percent_similarity NOW: ",biggest_percent_similarity,str(each_number)
score = biggest_percent_cmd_sec + " " + str(biggest_percent_similarity)
# if the n command in the similarity list is less than the n-1 command in the similarity list then this executes.
elif (similarity_percent_lst[each_number] < biggest_percent_similarity) == True:
print "\n" + "similarity_percent_lst[each_number] < biggest_percent_similarity"
print similarity_percent_lst[each_number] + ">" + str(biggest_percent_similarity)
print "biggest_percent_similarity BEFORE: ",biggest_percent_similarity,str(each_number)
biggest_percent_similarity = similarity_percent_lst[each_number - 2]
biggest_percent_cmd_sec = similarity_percent_lst[each_number - 3]
print "biggest_percent_similarity: ",biggest_percent_similarity,str(each_number)
score = biggest_percent_cmd_sec + " " + str(biggest_percent_similarity)
else:
score = "\n" + "else none"
elif len(similarity_percent_lst) < 2:
score = "\n" + "elif none"
else:
print "\n" + "it aint two numbers"
biggest_percent_cmd_sec = similarity_percent_lst[0]
biggest_percent_similarity = similarity_percent_lst[1]
score = biggest_percent_cmd_sec + " " + str(biggest_percent_similarity),str(each_number)
print similarity_percent_lst
print "score: " + score
【问题讨论】:
-
能否请您发布一些具有预期和实际输出的示例?
-
我认为
similarity_percent_lst是输入,标题和分数是交替的。我可以建议不要将所有输入存储在一个混合数据类型的数组中,而是拥有一个元组(或对象)列表,其中每个元组都包含其相关数据。input = [("who_is_cmds", 50.0), ("when_is_cmds", 15.0)] -
你的代码永远不会像这样工作,因为你没有缩进你的 for 循环。
-
您是否要查找与最高数字关联的字符串?
-
是的,我正在尝试查看哪个具有最高值并获取与之关联的字符串@StephenPaulger
标签: python list python-2.7 sorting