3天的编程新手.列表索引必须是整数,而不是元组



初来乍到,又学了3天编程。我目前正在学习Code Academy (Python),在一次自由支配的作业中,我决定写一些与作业无关的代码,只是为了测试我所学到的一些东西。下面是我到目前为止的代码:

guns = ["AWP", "SSG 08", "SG 553", "SCAR-20 ", "G3SG1", "AK-47"]
print guns
print "Of the above mentioned Rifles, which one is the most accurate in CS:GO?", 
answer = raw_input()
answer_capitalize = answer.upper() 
correct_answer = guns[0]
if answer_capitalize == correct_answer:
    print "You are correct. The AWP is the most accurate weapon in CS:GO"
elif answer_capitalize == guns[1, 2, 3, 4, 5]:
    print "I'm sorry. " + answer_capitalize + " is not correct. Please try again."
else:
    print "You spelled your weapon choice incorrectly. Please try again."
下面是我得到的错误:Traceback(最近一次调用):文件"python",第11行,在TypeError:列表索引必须是整数,而不是元组

第11行是elif语句(这里的间距不同)

当输入'awp'时没有错误代码,但对于任何其他输入都会生成错误代码。

这段幼儿园级的小代码的目的是问一个问题,哪种武器是最准确的。如果他们回答awp,他们就答对了,如果他们选择了错误的武器,并且拼写正确,那么elif语句就开始发挥作用了。如果他们破坏了武器的拼写,或者输入了列表上的单词之外的任何内容,那么else语句就会发挥作用。另一个麻烦的地方是,它在收到输入后同时打印IF和ELIF语句。

我的下一步,我还没有讲到,是在他们猜错的情况下循环。我现在只是想把前半部分改对。

提前感谢您的帮助!

您的错误在这一行:

elif answer_capitalize == guns[1, 2, 3, 4, 5]:

你不能像这样引用列表项。

可以使用

elif answer_capitalize in guns: #First if catches the correct answer

列表不是这样的。

elif answer_capitalize == guns[1, 2, 3, 4, 5]:

语法错误。要获取列表的子列表,可以使用guns[1:5]。但是,在您的情况下,直接进入要点并使用answer_capitalize != correct_answer。为了更具体地解释"拼写错误",请使用answer_capitalize in guns

guns也包含小写项目的情况下,您想检查它是否在列表大小写中不敏感,您可以使用列表推导式将guns转换为大写:guns_uppercase = [gun.upper() for gun in guns] .

您可以使用类似于您在if语句中使用的。

elif answer_capitalize != correct_answer:
    print "I'm sorry. " + answer_capitalize + " is not correct. Please try again."

!=表示不相等。

如前所述,没有简明的语法来获取非连续子列表。但是,您可以使用列表推导式:

elif answer_capitalize in [guns[i] for i in [1,2,3,4,5]]:

然而,可能这样做会更有效:

elif any(answer_capitalize==guns[i] for i in [1,2,3,4,5]):

elif answer_capitalize == [0 for guns in range(5)]:

最新更新