如何在用户输入后永久更改列表?

时间:2015-04-15 15:34:48

标签: python list append extends

hiddenWords = ['hello', 'hi', 'surfing']
print("Would you like to enter a new list of words or end the game? L/E?")
    decision  = input()
    if decision == 'L':
        print('Enter a new list of words')
        newString = input()
        newList = newString.split()
        hiddenWords.extend(newList)
        j = random.randint(0, len(hiddenWords) - 1)
        secretWord = hiddenWords[j]
        exit(0)

如何将用户的输入永久添加到hiddenWords列表中,以便下次打开应用程序时,用户输入的单词已扩展到hiddenWords列表?

感谢。 本准则是代码主体的一部分。

3 个答案:

答案 0 :(得分:2)

写作时

hiddenWords = ['hello', 'hi', 'surfing']

每次程序运行时,您都将变量hiddenWords定义为['hello', 'hi', 'surfing']。 因此,无论您在此之后延伸,每次代码运行上面的行时,它都将重新定义为该值。

您实际需要的是使用数据库(如SQLite)来存储值,以便您可以随时检索它们。 此外,您可以将数据保存在文件中并每次都读取,这是一种更简单的方法。

答案 1 :(得分:1)

当程序退出时,所有变量都会丢失,因为变量只会在内存中退出。为了在程序执行期间保存修改(每次运行脚本时),都需要将数据保存到磁盘上,即:将其写入文件。 Pickle确实是最简单的解决方案。

答案 2 :(得分:0)

我喜欢json。这将是一个可能的解决方案:

import json

words = []
try:
  f = open("words.txt", "r")
  words = json.loads(f.read())
  f.close()
except:
  pass

print("list:")
for word in words:
  print(word)
print("enter a word to add it to the list or return to exit")
add = raw_input() # for python3 you need to use input()

if add:
  words.append(add)
  try:
    f = open("words.txt", "w")
    f.write(json.dumps(words, indent=2))
    f.close()
    print("added " + add)
  except:
    print("failed to write file")

如果您想一次添加多个单词,请使用此功能。

import json

words = []
try:
  f = open("words.txt", "r")
  words = json.loads(f.read())
  f.close()
except:
  pass

print("list:")
for word in words:
  print(word)

save = False
while True:
  print("enter a word to add it to the list or return to exit")
  add = raw_input() # for python3 you need to use input()
  if add:
    words.append(add)
    print("added " + add)
    save = True
  else:
    break

if save:
  try:
    f = open("words.txt", "w")
    f.write(json.dumps(words, indent=2))
    f.close()
  except:
    print("failed to write file")