我几乎是python的初学者,我在从列表中删除整数时遇到问题。我收到一个错误,AttributeError:'int'对象没有属性'remove',我不知道如何解决它。对于经验丰富的人来说,这可能非常容易,而且我已经查看过去的答案但仍然会返回相同的错误
repeat = 0
while repeat <= 4:
question_list = [1,2,3,4,5]
number = random.choice(question_list)
if number == 1:
print(question1())
repeat = repeat + 1
number.remove(1)
elif number == 2:
print(question2())
repeat = repeat + 1
number.remove(2)
elif number == 3:
print(question3())
repeat = repeat + 1
number.remove(3)
elif number == 4:
print(question4())
repeat = repeat + 1
number.remove(4)
elif number == 5:
print(question5())
repeat = repeat + 1
number.remove(5)
答案 0 :(得分:2)
number = random.choice(question_list)
将number
分配给您在问题列表中调用int
后返回的random.choice
。如果您要从question_list
列表中移除number
来电删除而不是 question_list.remove(x)
:
question_list
你需要在while循环外指定question_list = [1,2,3,4,5] # here
while repeat <= 4:
,如果你把它放在里面你继续创建一个新列表,那么删除永远不会持续。
dict
更好的实施可能是使用range
并只使用import random
# map numbers to functions
questions = {1:question1,2:question2,3:question3,4:question4,5: question5}
question_list = [1, 2, 3, 4, 5] # outside loop
for _ in range(4): # loop in range 4
number = random.choice(question_list)
question_list[func]() # call function using dict key val
question_list.remove(number)
:
question_list = [question1,question2,question3,question4,question5]
for _ in range(4):
func = random.choice(question_list)
func()
question_list.remove(func)
或者只是将功能存储在列表中并随机选择一个:
{{1}}
答案 1 :(得分:1)
您应该使用列表中的remove函数,并将int作为参数。所以应该成为:
question_list.remove(something)
答案 2 :(得分:1)
由于评论已经解释了为什么你的代码不起作用,我想建议一个更简单的替代方案。
您似乎想要以随机顺序调用一些函数 没有必要按照你的方式使事情复杂化,并且从列表中删除元素。
您可以简单地拥有一个功能列表,将其随机播放,并按顺序调用每个函数:
questions = [question1, question2, question3, question4, question5]
random.shuffle(questions)
for question in questions:
question()