如何让用户输入一个数字,从当前列表中选择该项并将其添加到新列表中?

2024-10-01 04:46:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个快速的游戏,只是为了好玩,只是学习代码,我似乎无法摆脱这个问题

set1 = ["Horse", "Cow", "Pig", "Goat", "Chicken", "Sheep", "Donkey", "Duck", "Rabbit"]
set2 = ["Horse", "Cow", "Pig", "Goat", "Chicken", "Sheep", "Donkey", "Duck", "Rabbit"]
random.shuffle(set1,random.random)
random.shuffle(set2,random.random)
side1 = int(input("What number would you like to pick from side one?"))
side2 = int(input("What number would you like to pick from side two?"))
s1pick = set1.index(side1)
s2pick = set2.index(side2)
picks = []

我希望他们为side1side2输入2个数字,然后将set1set2中的相应值存储在s2picks1pick中。但我一直收到这样的错误信息:

Traceback (most recent call last):
    File "C:/Users/Me/PycharmProjects/nice memes/src/snap.py", line 26, in <module>
        s1pick = set1.index(side1)
ValueError: 4 is not in list

在pycharm社区版上使用python3。谢谢


Tags: indexrandomduckpigdonkeychickencowsheep
3条回答

index()actually returns the index of the value that you pass to the method。出现错误是因为值4不在调用index()方法的列表中。如果在从用户处获取提示后,已经将其转换为int(),那么您只需从列表中指定该索引处的元素,如下所示:

s1pick = set1[side1]
s2pick = set2[side2]

不过,要小心。您得到的input()可能超出了列表的范围。因此,我会将您的输入放入while循环,以确保您得到有效的输入:

side1 = # input code
side2 = # input code

while side1 not in range(len(set1)) or side2 not in range(len(set2)):
    side1 = # input code
    side2 = # input code

^{}返回传递给它的元素值的索引。所以对于列表l = ['a', 'b', 'c']l.index('b')将返回1

如果要转到另一个方向,获取索引的值,则应使用项访问语法:

>>> l = ['a', 'b', 'c']
>>> l[1]
'b'

因此,在您的例子中,您希望使用set1[side1],以便获得用户从set1中选择的值

比较两段代码:

list1 = ["Horse", "Cow", "Pig", "Goat", "Chicken", "Sheep", "Donkey", "Duck", "Rabbit"]
list2 = ["Horse", "Cow", "Pig", "Goat", "Chicken", "Sheep", "Donkey", "Duck", "Sheep"]

######################
index1 = 2
index2 = 3
element1 = list1[index1]
element2 = list2[index2]
print (element1) # output: Pig
print (element2) # output: Goat


######################
index1 = list1.index("Sheep")
index2 = list2.index("Donkey")
print (index1)   # output: 5
print (index2)   # output: 6

相关问题 更多 >