Python - 我只能用追加保存一件事?

Posted

技术标签:

【中文标题】Python - 我只能用追加保存一件事?【英文标题】:Python - I can only save one thing with append? 【发布时间】:2015-09-29 13:33:32 【问题描述】:

这是我的代码。我无法在列表中保存超过 1 项,我不知道为什么。

该程序的重​​点是保存单词(如“香蕉”),然后为其添加描述(“黄色”)。我正在使用 Python 2.7

word = []  
desc = []

def main_list():

    print "\nMenu for list \n"
    print "1: Insert"
    print "2: Lookup"
    print "3: Exit program"

    choice = input()
    print "Choose alternative: ", choice

    if choice == 1:
        insert()
    elif choice == 2:
        look()
    elif choice == 3:
        return
    else:
        print "Error: not a valid choice"

def insert():
    word.append(raw_input("Word to insert: "))
    desc.append(raw_input ("Description of word: "))
    main_list()

def look():
    up = raw_input("Word to lookup: ")
    i = 0
    while up != word[i]:
        i+1
    print "Description of word: ", desc[i]
    main_list()

【问题讨论】:

你期待什么,你会得到什么? 你如何运行这个?没有调用这些的 main 方法。 如果我只插入单词“banana”和描述“yellow”,一切正常,但如果我还添加其他内容,例如带有描述的“computer”,那么我只能查看() “香蕉”。如果我用“计算机”看()什么也没发生,程序似乎永远加载。你认为 Python 2.7 可能有问题吗? 在你的代码中尝试i += 1 而不是i+1。没有分配发生,所以外观只是不断检查列表中的相同位置。 @Kaiser 你为什么使用递归调用没有必要 【参考方案1】:

您没有更新i 的值。您正在调用i+1,它实际上并没有做任何事情(它只是评估i + 1 并丢弃结果)。改用i += 1,这似乎可行。

此外,当您有一个内置数据结构用于创建字典时,这是一种相当奇怪的方法 - 字典 ()。

【讨论】:

谢谢,这就是问题所在。 您可以接受我的回答并获得2个rep积分奖励!【参考方案2】:

一般来说,你不应该使用两个列表来保存单词及其各自的描述。

这是一个使用字典的经典案例,一旦你有很多单词,它也会对你有所帮助,因为你不需要遍历所有条目来找到对应的描述。

words = 

def main_list():

    print "\nMenu for list \n"
    print "1: Insert"
    print "2: Lookup"
    print "3: Exit program"

    choice = input()
    print "Choose alternative: ", choice

    if choice == 1:
        insert()
    elif choice == 2:
        look()
    elif choice == 3:
        return
    else:
        print "Error: not a valid choice"

def insert():
    word = raw_input("Word to insert: ")
    desc = raw_input ("Description of word: ")
    words[word] = desc
    main_list()

def look():
    up = raw_input("Word to lookup: ")
    print "Description of word: ", words.get(up, "Error: Word not found")
    main_list()

【讨论】:

感谢您的提示,现在就尝试一下。

以上是关于Python - 我只能用追加保存一件事?的主要内容,如果未能解决你的问题,请参考以下文章

在 NSUserDefaults 中保存用户选择

拆分 Python 文件名 [重复]

人生苦短,我用Python--爬虫模拟登陆教务处并且保存数据到本地

保存 html 文件的当前状态?

在 Python 中追加列表

将 XML 保存到相对文件位置。