我对代码中的列表使用了随机函数,但无法选择特定元素。
代码
import random
lst=['black','blue','green','red','yellow']
lst1=[1,2,3,4,5]
for a in range(1,4):
l=random.choice(lst1)
l1=random.choice(lst)
print(l,l1)
如果输出为:
2 green
3 blue
4 yellow
我如何键入'3'并且输出为'blue'或当我键入'2'时输出的输出为'green'?(对于数字,使用随机功能后应打印相应的颜色)
答案 0 :(得分:1)
将对放入字典中
pairs = {}
for a in range(1,4):
l=random.choice(lst1)
l1=random.choice(lst)
pairs[l] = l1
n = int(input("Enter a number:"))
if n in pairs:
print(pairs[n])
else:
print"Not found")
答案 1 :(得分:0)
除了Barmar的好答案之外,您还可以稍微清理一下代码,并且避免两次获得相同的数字或颜色:
pairs = {l : l1 for l, l1 in zip(random.sample(lst1, 3), random.sample(lst, 3))}
random.sample(lst1, 3)
将随机选择lst1
中的3个 unique 元素。然后,我们还从其他列表中选择了3个唯一的随机元素。然后,我们将这些元素压缩到成对的列表中,然后将它们全部放入字典中。
答案 2 :(得分:0)
我建议先使用random.shuffle
,然后再使用list.pop
,以避免重复的键和值,以便在dict中始终包含三个元素(跳过的用户输入,已在其他答案中显示):>
import random
colors=['black','blue','green','red','yellow']
nums=[1,2,3,4,5]
res = {}
for _ in range(3):
random.shuffle(colors)
random.shuffle(nums)
num, color = nums.pop(), colors.pop()
res[num] = color
print(res)
#=> {4: 'green', 3: 'yellow', 1: 'black'}
print(res[1])
#=> black
print(colors, nums) # not used
#=> ['blue', 'red'] [2, 5]
答案 3 :(得分:0)
不需要两个列表-只需使用random.sample()
将您的colors
和enumerate移到字典中:
import random
colors=['black','blue','green','red','yellow']
# create the dict from a 3-parts sample, enumeration starting at 1
d = dict( enumerate(random.sample(colors,k=3), 1) )
测试:
for _ in range(5):
d = dict( enumerate(random.sample(colors,k=3), 1) )
print(d)
输出:
{1: 'blue', 2: 'yellow', 3: 'black'}
{1: 'yellow', 2: 'green', 3: 'blue'}
{1: 'black', 2: 'green', 3: 'yellow'}
{1: 'black', 2: 'yellow', 3: 'red'}
{1: 'yellow', 2: 'green', 3: 'blue'}
您可以通过d[1]
到d[3]
来访问颜色。
Doku: