错误:TypeError:';str';对象在尝试选择随机赢家时不能解释为整数(Python)
我对编程有点陌生,我一直试图弄乱Python,但当我试图创建一个随机名称选择器,从列表中选择一个随机名称时,我总是会遇到相同的错误。我还尝试删除代码选择的获胜者,并将一个新名称添加到“获胜者”列表中,但似乎不起作用。这是我现在的短代码错误:TypeError:';str';对象在尝试选择随机赢家时不能解释为整数(Python),python,string,random,Python,String,Random,我对编程有点陌生,我一直试图弄乱Python,但当我试图创建一个随机名称选择器,从列表中选择一个随机名称时,我总是会遇到相同的错误。我还尝试删除代码选择的获胜者,并将一个新名称添加到“获胜者”列表中,但似乎不起作用。这是我现在的短代码 winners = ["Wane", "Trevor", "Franklin", "Martoz"] winner = random.choice(winners) winners.pop(winner) winners.append("Michael") pri
winners = ["Wane", "Trevor", "Franklin", "Martoz"]
winner = random.choice(winners)
winners.pop(winner)
winners.append("Michael")
print(winners)
如果要从列表中删除项目,请使用
.remove()
函数,如下所示:
>>> winners = ["a", "b", "c"]
>>> winners.remove("b")
>>> winners
['a', 'c']
.pop()
用于根据给定索引从列表中提取元素,并返回从列表中删除的元素。出现错误是因为您试图根据列表中的元素(名称)而不是其索引(其在列表中的位置)弹出
如果您想继续使用pop
,或许可以在列表中选择一个随机索引,而不是选择一个随机名称:
winners = ["Wane", "Trevor", "Franklin", "Martoz"]
winner = winners.pop(random.randrange(len(winners)))
import random
participants = ["Wane", "Trevor", "Franklin", "Martoz"]
winners = []
print("Participants before:", participants)
print("Winners before:", winners)
winner = random.choice(participants)
winners.append(winner)
participants.remove(winner)
winner = random.choice(participants)
winners.append(winner)
participants.remove(winner)
print("Participants after:", participants)
print("Winners after:", winners)
如果为方法
list.pop
提供参数,则该参数必须是integer类型,并表示列表中元素的索引
因为你的电话看起来像
winners.pop(winner)
而winner
是一个字符串,您将得到提到的错误
TypeError:“str”对象不能解释为整数
另外,我不确定您真正想要做什么,但您可能需要有两个列表参与者
和获胜者
。以下示例从列表中抽取两名获奖者:
winners = ["Wane", "Trevor", "Franklin", "Martoz"]
winner = winners.pop(random.randrange(len(winners)))
import random
participants = ["Wane", "Trevor", "Franklin", "Martoz"]
winners = []
print("Participants before:", participants)
print("Winners before:", winners)
winner = random.choice(participants)
winners.append(winner)
participants.remove(winner)
winner = random.choice(participants)
winners.append(winner)
participants.remove(winner)
print("Participants after:", participants)
print("Winners after:", winners)
其中打印:
Participants before: ['Wane', 'Trevor', 'Franklin', 'Martoz']
Winners before: []
Participants after: ['Wane', 'Trevor']
Winners after: ['Martoz', 'Franklin']
不要使用
.pop()
,只需使用remove()
如果要使用
pop()
函数,应在winners
列表中提供winner
的索引。这可以通过使用winners.index(winner)
结果:
['Wane', 'Trevor', 'Martoz', 'Michael']
将错误回溯作为单独的代码块发布。这使我们更容易发现有错误的行。
pop()
需要项目在列表中的位置,而不是项目的值。i、 它需要类似于pop(0)
或pop(5)
的东西。