Python:抽认卡游戏库中的随机密钥选择
一般来说,我对python和编程相当陌生,正在尝试创建一些简单的程序。 我决定建立一个小型的抽认卡程序,以帮助我学习БССаа,并使用了一本字典,其中英文定义为关键,等价物为值。程序运行了,但我正在努力想如何将被调用的单词随机化。我尝试过随机选择(词汇),但收效甚微。我还尝试将字典键/值对转换为列表,但很难使用到目前为止使用的格式调用它们 有没有一种方法可以使用此脚本的变体来随机调用密钥?此外,不同的对象类型对这样的程序更有用吗?谢谢Python:抽认卡游戏库中的随机密钥选择,python,dictionary,random,Python,Dictionary,Random,一般来说,我对python和编程相当陌生,正在尝试创建一些简单的程序。 我决定建立一个小型的抽认卡程序,以帮助我学习БССаа,并使用了一本字典,其中英文定义为关键,等价物为值。程序运行了,但我正在努力想如何将被调用的单词随机化。我尝试过随机选择(词汇),但收效甚微。我还尝试将字典键/值对转换为列表,但很难使用到目前为止使用的格式调用它们 有没有一种方法可以使用此脚本的变体来随机调用密钥?此外,不同的对象类型对这样的程序更有用吗?谢谢 import random vocabulary = {
import random
vocabulary = {
"to study (imperfective)": "изучать",
"to begin (imperfective)": "начинать",
"to begin (perfective)": "начать"
}
n = 0
while n < 1:
for english, russian in vocabulary.items():
print("Translate:\n" + english + "\n")
answer = input("Answer:\n" )
if answer == russian:
print("Correct!\n")
else:
print("Incorrect! Correct answer: \n" + russian + "\n")
随机导入
词汇={
“学习(不完善)”:“学习(不完善)”,
“开始(不完善)”:“开始”,
“开始(完成)”:“开始”
}
n=0
当n<1时:
对于英语,词汇为俄语。items():
打印(“翻译:\n”+英语+“\n”)
回答=输入(“回答:\n”)
如果答案=俄语:
打印(“正确!\n”)
其他:
打印(“不正确!正确答案:\n”+俄语+“\n”)
您可以使用随机
模块的选项
功能:
from random import choice
numbers = [1, 2, 3, 4, 5]
random_element = choice(numbers)
你可以在字典的.keys()
上调用它来获取python2中的一个随机键,或者正如abarnert所说,在python3中使用选项之前,将你的项更改为元组(或列表的键) 可以:
从非空序列seq返回一个随机元素
唯一的问题是这里没有序列,你有字典
但字典是其键的一个iterable,因此您可以直接构造其键的元组(或列表,或大多数其他类型的序列):
english = random.choice(tuple(vocabulary))
russian = vocabulary[english]
或者,由于其items视图是键值对的iterable:
english, russian = random.choice(tuple(vocabulary.items())
对于一个大型字典来说,这有点浪费,因为它将键或项复制到一个元组中,只是为了选择一个元组。但是,当你只谈论3个键,甚至50000个键时,这不会是一个问题,所以请保持简单
import random
vocabulary = {
"to study (imperfective)": "изучать",
"to begin (imperfective)": "начинать",
"to begin (perfective)": "начать"
}
randomChoice = random.randint(0, len(vocabulary)-1)
randomChoice = list(vocabulary.keys())[randomChoice]
print randomChoice
print vocabulary[randomChoice]
印刷品:
“学习(不完善)”、“开始(不完善)”或“开始(完善)”
以及:“зггггггга”和“ггггаа”
在脑海中浮现……@PatrickArtner,答案就在前三个字中:)事实上,你不能在关键视图上,或者在dict本身上调用它choice
需要一个序列,而不仅仅是一个iterable。最简单的解决方案(对于这么小的dict来说很好)是choice(tuple(词汇表))
@abarnert(在python 3中,对吧)。choice函数确实需要索引,我会更新以反映这一点。它在Python 2中也需要一个序列,它只是不检查它,所以如果你这样做,比如说,choice({0:“spam”,2:“eggs”})
它将返回“spam”
一半的时间和keyrerror:1
另一半的时间。除非您的键恰好位于范围(0,len(d))
,否则它实际上不起作用。它对2.x中的keys()
有效的唯一原因是keys()
已经在将键复制到列表中。