Rand Dict值在python中不起作用

Rand Dict值在python中不起作用,python,dictionary,random,Python,Dictionary,Random,我有没有办法指定我想要的“ben stiller”或“bill murray”的值 我知道我不能做随机选择(ben_stiller.values()): 我还改变了口述,所以关键是电影的名字,现在作品完美了 ^ 随机导入 最后一个人={ “马克·沃尔伯格”:“1”, “本·斯蒂勒”:“2”, “比尔·默里”:“3”, } 标记={ 《电影》:火星人, 《电影》:《逝者》, “电影”:“XYZ” } 本·斯蒂勒={ ‘电影’:‘见父母’, 《电影》:关于玛丽的故事, “电影”:“不知道” } 比尔

我有没有办法指定我想要的“ben stiller”或“bill murray”的值

我知道我不能做随机选择(ben_stiller.values()):

我还改变了口述,所以关键是电影的名字,现在作品完美了

^
随机导入
最后一个人={
“马克·沃尔伯格”:“1”,
“本·斯蒂勒”:“2”,
“比尔·默里”:“3”,
}
标记={
《电影》:火星人,
《电影》:《逝者》,
“电影”:“XYZ”
}
本·斯蒂勒={
‘电影’:‘见父母’,
《电影》:关于玛丽的故事,
“电影”:“不知道”
}
比尔·穆雷={
‘电影’:‘水生生物’,
“电影”:“拉什莫尔”,
《电影》:土拨鼠日
}
打印“有三名演员,其中一名将随机选择”
打印“你必须说出尽可能多的电影名称”
打印“如果你错了一次,你就输了,你有三次机会,而且必须得到一次正确的机会”
random.choice(last_man.keys())
打印“演员randonly Selected is:”,random.choice(last_man.keys())
猜测次数=0
猜测时,完全错误为

File "movie.py", line 42
  if guess == random.choice(bill_murray.keys())
                                             ^
SyntaxError: invalid syntax
因此,语法无效。
if
行需要以
结尾:

elif guess == random.choice(ben_stiller.keys()):
#                                              ^---- and so on 
如果我们通过添加冒号来对第42行进行排序,则得到

File "movie.py", line 45
  elif guess == random.choice(ben_stiller.keys())
                                              ^
SyntaxError: invalid syntax
因此,语法无效。
elif
行需要以
结尾:

elif guess == random.choice(ben_stiller.keys()):
#                                              ^---- and so on 
语法错误现在消失了。 现在我们有另一个问题。 还有打字错误

“你有三次机会,”

->

“你有三次机会,”

无论如何。如果它给了我

唯一被选中的演员是:比尔·默里

(好的,两个打字错误…)

我选择了“拉什莫尔”,它告诉我我错了。正如评论所指出的,当我尝试向字典中的现有键(“movie”)添加值时,它会被替换。能给我们一张电影单吗

而且,当我播放这个时,它没有使用电影:

The actor randonly chosen is:  Bill Murray
: rushmore
You lost
1
: Groundhogs day
You lost
2
: Life Aquatic
You lost
3
: movie
you won in 4 guesses
4
让我们用电影列表代替。作为参与者名称的键的值。 并移除退出(0)

大概是这样的:

import random

last_man = {
    'Mark Walberg': ['The martian', 'The Departed', 'XYZ'],
    'Ben Stiller': ['Meet the parents', 'Something about mary', 'dunno'],
    'Bill Murray': ['Life Aquatic', 'rushmore', 'Groundhogs day']

}


print "There are three actors, one will be chosen randomly"
print "You have to name as many movies as they have been in"
print "If you get one wrong, you lose, you have three chances, and must get one correct"

actor = random.choice(last_man.keys())
#^--- remember who

print "The actor randomly chosen is: ", actor

guesses_taken = 0

while guesses_taken <= 3:
    guess = raw_input(': ')
    guesses_taken = guesses_taken + 1

    if guess in last_man[actor]:
        print "you won in %s guesses" % guesses_taken
        print guesses_taken
        break
    else:
        print "you lose"
随机导入
最后一个人={
“马克·沃尔伯格”:[“火星人”、“逝者”、“XYZ”],
“本·斯蒂勒”:[“见见父母”、“关于玛丽的事”、“不知道”],
比尔·默里:[“水生生物”、“拉什莫尔”、“土拨鼠日”]
}
打印“有三名演员,其中一名将随机选择”
打印“你必须说出尽可能多的电影名称”
打印“如果你错了一次,你就输了,你有三次机会,而且必须得到一次正确的机会”
actor=random.choice(last_man.keys())
#^---记得谁吗
打印“随机选择的演员是:”,演员
猜测次数=0

当你猜测的时候,你可能想再想想字典是如何工作的。字典每个键只能有一个值。在字典文本的情况下,最后一个获胜,因此,例如,
bill_murray
只包含
{'movie':“土拨鼠日”}
。在您的情况下,
keys()
总是返回
['movie']
。您缺少
if
语句末尾的
。。。还有:在你所有的elif声明的末尾。。。。了解版本控制,以便在破坏代码时发现差异。Re:“现在可以忽略此项”。如果我是你,我会删除这个问题。特别是当您编辑代码以更正问题时:)我实际上在工作版本中,有电影名称和电影值的键。任意做随机选择的方法(bill_murray.values()):?我知道这不起作用,但我如何才能检索到值?我想我可以使用这个键来产生它的价值。多谢了,我已经接近使用dict格式了,就像你对演员和电影的嵌套列表所做的那样。我刚刚在diff-dict设置中使用了这种格式,类似于州、州缩写和人口。至于打字错误,我知道他们在那里,只是看看代码是否有效。一开始我把它设置正确了,这样我就有了一个随机的演员,有三次机会猜出他三部电影中的一部,效果非常好。我不知道是什么原因导致它出了问题,一定是出了问题。我希望我能拿出那个版本,我仍然能在我的终端上看到它正常工作。我知道这是一种奇怪的使用dict的方式,但因为我对它是全新的,我倾向于最大限度地使用我正在学习的任何东西,并以不寻常的方式使用它,看看我是否能想出如何实现它。在这种情况下,我确实弄明白了,但后来改变了它,以更新打印,不知怎的,这一切都搞砸了。这是学习python的一种愚蠢的方式吗?尝试一些事情,看看发生了什么总是好的。但是一定要学习版本控制(例如git),这样你就可以很容易地跟踪在出现问题时所做的更改。