Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:TypeError:';str';对象在尝试选择随机赢家时不能解释为整数(Python)_Python_String_Random - Fatal编程技术网

错误:TypeError:';str';对象在尝试选择随机赢家时不能解释为整数(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

我对编程有点陌生,我一直试图弄乱Python,但当我试图创建一个随机名称选择器,从列表中选择一个随机名称时,我总是会遇到相同的错误。我还尝试删除代码选择的获胜者,并将一个新名称添加到“获胜者”列表中,但似乎不起作用。这是我现在的短代码

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)
的东西。