python中的这个简单函数无法正常工作

时间:2013-04-18 17:07:32

标签: python list

我对这些程序有一些问题。我在python中编写一个函数,它接受一个列表列表和一个字符串作为输入,如果列表列表中列表的第二个元素等于给定的字符串,则返回“名称在这里”。在这种情况下,我所拥有的列表是

railway = [["Milan","Zurich"],["Zurich","Bern"],["Bern","Berlin"],["Berlin","Copenaghen"]] 

我的职责是:

def travel( list , stringdestination):
        i = 0
    for elemento in range(len(list)):
      if list[i][1] == stringdestination:
          print "target reached"   

我跑的时候:

travel(railway, "Bern") 

它应该显示:“目标已到达”但它没有,它没有显示任何内容,为什么?

4 个答案:

答案 0 :(得分:3)

你永远不会增加我。你的循环应该是:

for pair in list:
    if pair[1] == stringdestination:
        print "target reached"

答案 1 :(得分:3)

正如已经回答的那样,你没有增加循环变量。但这是错误的,更重要的是,你就像一个只用锤子在他的工具箱中的男人。这几乎就是数据结构称为字典的确切原因。它是内置的。

阅读本文,它更容易,更好。 http://www.tutorialspoint.com/python/python_dictionary.htm

答案 2 :(得分:2)

几点:

  1. 不要将list用作变量名称。 list是内置名称
  2. 直接迭代列表for i in mylist
  3. 通过在迭代中分配2个变量,可以“解包”列表中的对
  4. 例如:

    def travel(places, destination):
        for start, dest in places:
            if destination == dest:
                print "target reached"
                break
    

    您可能希望在找到目的地时停止迭代。通过立即从函数返回或者断开而不返回任何内容(如果函数中没有return它隐式返回None)来这样做。

答案 3 :(得分:0)

我会把它包裹在function中,所以当一个创建正确的字符串时我会停止。它阻止循环遍历整个列表:

def arrived(s, raileway):
    for r in railway:
        if r[1] == s:
            return True
    return False

if arrived("Bern", railway):
    print("target reached")