【问题标题】:Python, list, indexPython,列表,索引
【发布时间】:2018-11-13 06:15:06
【问题描述】:

我正在尝试为我的 Python 课程(自学)编写一个小程序,有点像使用列表的字典。一个列表中有一个短语/单词,另一个列表具有短语/单词的含义。通过用户输入,用户可以输入他们正在搜索的单词,并显示单词的含义。我在试图表达要表达的意思时遇到了麻烦。我的代码如下:“aldo”是我的第一个输入(单词),“我的名字”是我的第二个输入(含义)

word = []
meaning = []

user_word = input("Enter word: ")
user_meaning = input("Enter Meaning: ")
print(word)
print(meaning)

word = word + [user_word]
meaning = meaning + [user_meaning]

user_search = input("What word/phrase would you like to search: ")
search_index = word.index(user_search)
print(user_search + meaning.index(search_index))

【问题讨论】:

  • “我遇到麻烦”是什么意思?输出不是你所期望的吗?错误信息?
  • 预期输出是什么?
  • 表示输入的“单词”不在列表中
  • 如果我不得不猜测,它会说类似“ValueError: 3 is not in list”。您应该提供Minimal, Complete, and Verifiable example,其中包括错误消息的完整回溯。
  • 尝试将最后一行更改为print(user_search + meaning[search_index])

标签: python list indexing


【解决方案1】:

您的代码中有一些错误/问题。

  1. 打印空列表,不确定这是否旨在作为调试检查,但您在将值附加到列表之前打印列表,因此它们将始终为空。所以我假设你想在这里打印用户的输入;如果不是,则首先附加值,然后打印列表。

  2. 使用list.append(item) 而不是list = list + [item]

  3. meaning.index(search_index) 应该是 meaning[search_index],因为 list.index(item) 返回列表中该项目第一次出现的索引值,而不是值本身。

  4. 最后,不是很重要,但更多的是可读性问题,请确保单词和含义或某种分隔符之间有空格。

这是假设预期行为的代码:

word = []
meaning = []

user_word = input("Enter word: ")
user_meaning = input("Enter Meaning: ")
print(user_word)
print(user_meaning)

word.append(user_word)
meaning.append(user_meaning)

print(word)
print(meaning)

user_search = input("What word/phrase would you like to search: ")
print(user_search)
search_index = word.index(user_search)
print(user_search,  meaning[search_index])

【讨论】:

  • 嗨 Saif,感谢您指出我正在打印空列表。并感谢您的帮助。一直在学习!
【解决方案2】:

如果您正在尝试创建字典,您可以使用字典而不是列表来存储单词和含义,然后使用它来搜索单词(要了解有关字典的更多信息,您可以查看documentation)。

您可以尝试以下操作:

my_dictionary = {} # dictionary to store word and meaning

user_word = input("Enter word: ").lower() # .lower() for not being case sensitive
user_meaning = input("Enter Meaning: ").lower() # .lower()

# add word and meaning to dictionary
my_dictionary[user_word] = user_meaning

# search word
user_search = input("What word/phrase would you like to search: ").lower()
print("Meaning of {0} is: {1}".format(user_search, my_dictionary[user_search]))

【讨论】:

    【解决方案3】:

    .index() 找到一个索引,而不是一个值

    您的意思是使用meaning[search_index]吗?

    此外,要添加到列表中,使用 .append(value) 优于 + [value]

    user_word = input("Enter word: ")
    user_meaning = input("Enter Meaning: ")
    
    word.append(user_word.strip())
    meaning.append(user_meaning)
    
    user_search = input("What word/phrase would you like to search: ")
    search_index = word.index(user_search.strip())
    print(user_search + " " + meaning[search_index])
    

    【讨论】:

    • 它说输入的“单词”不在列表中
    • 好吧,我们看不到您的输入值来告诉您这是真的
    • " 文件 "/home/khalid/Desktop/MiniProject2/khalid_ahmed.py",第 13 行,在 search_index = word.index(user_search) ValueError: 'aldo' is not in list "是我得到的确切错误
    • 如果这解决了您的问题,请使用帖子旁边的复选标记接受它。您可能对这个问题感兴趣 - stackoverflow.com/q/22190064/2308683
    猜你喜欢
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多