为了账号安全,请及时绑定邮箱和手机立即绑定

将列表元素分配给 For 循环中的字符串

将列表元素分配给 For 循环中的字符串

天涯尽头无女友 2022-04-27 13:41:53
我正在尝试遍历列表中的两个元素(整数),并且对于列表中的每个元素,如果值等于整数,我想用字符串替换元素。我究竟做错了什么?players = [np.random.randint(1, 4), np.random.randint(1, 4)]for i in players:    if i == 1:        players[i] = 'rock'    elif i == 2:        players[i] = 'scissors'    elif i == 3:        players[i] = 'paper'player_1 = players[0]computer = players[1]print(player_1)print(computer)Actual:scissors1or, I get this error:Traceback (most recent call last):enter Player 1's choice:  File "...", line 12, in <module>    players[i] = 'scissors'enter Player 2's choice:IndexError: list assignment index out of rangeExpectedscissorsrock
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

i返回一个介于 1 和 4 之间的值,这就是您遇到list assignment index out of range错误的原因。

你可以只列出一个项目:

items = ["rock","scissors","paper"]

并随机选择它们

players = [items[np.random.randint(1, 4)], items[np.random.randint(1, 4)]]


查看完整回答
反对 回复 2022-04-27
?
智慧大石

TA贡献1946条经验 获得超3个赞

i是列表中该元素的值,而不是索引。如果您想更改列表而不是使用索引进行迭代。


for indx, val in enumerate(players):

    if val == 1:

        players[indx] = 'rock'

    elif val == 2:

        players[indx] = 'scissors'

    elif val == 3:

        players[indx] = 'paper'

你也不需要使用像 NumPy 这样的大包来获取一些随机数,因为 python 有一个内置的方法来做到这一点:


import random

choices = [random.randint(0, 2) for _ in range(2)]

print(choices) # [0, 2]

您也可以random充分利用:


import random

CHOICES = ('rock', 'paper', 'scissors')

choice1 = random.choice(CHOICES)

choice2 = random.choice(CHOICES)

print(choice1, choice2) # rock paper


查看完整回答
反对 回复 2022-04-27
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

使用len列表的属性进行迭代


for i in range(len(players)):

    if players[i] == 1:

        players[i] = 'rock'

    elif players[i] == 2:

        players[i] = 'scissors'

    elif players[i] == 3:

        players[i] = 'paper'


查看完整回答
反对 回复 2022-04-27
  • 3 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信