python - 我可以一次只打印其中一个问题吗?
问题描述
我需要随机化一些问题,一次得到一个问题。我的列表中有大约 200 个问题,我希望我的 python 代码从 200 个中随机选择一个。然后我希望它从列表中删除所有已经打印的问题,这样它们就不会再次出现。我当前的代码随机化了这些问题的出现顺序。有没有办法让它打印输出中的第一个问题,然后打印第二个,然后一次打印第三个?这是我的代码的外观(除了 200 个问题):
import random
questions = [
'define math',
'define french',
'define english',
'define spanish',
'define czech',
'define slovak',
'define whatever',
]
while questions:
index = random.randrange(0, len(questions))
selected = questions[index]
questions.pop(index)
print(selected)
我的输出(每次运行时都会看起来不同,因为它是随机的)看起来像这样
define czech
define math
define whatever
define french
define english
define slovak
define spanish
我可以让它自己打印“定义捷克语”,然后当我再次运行代码时,“定义数学”出现,然后“定义任何东西”以随机顺序出现?任何帮助将不胜感激!
解决方案
random.choice 一次选择一个元素,random.choices有选择限制,选择要选择多少个元素,这里我将其设置为 3。picked_questions 列表将检查问题是否重复。
import random
questions = [
'define math',
'define french',
'define english',
'define spanish',
'define czech',
'define slovak']
elems = random.choices(questions, k=3) # using choices this time and limit them to pick up 3 random elements you can set it to 1 to meet ur needs.i just wanna show u a method which match ur actual and next needs
picked_questions = ["define english", "define spanish", "define slovak"] # suppose those questions are already picked to check the condition success
for i in elems:
for x in picked_questions:
if i not in picked_questions:
picked_questions.append(i) # this could be optimized using list comprehension
print(elems, '\n')
print(picked_questions)
随机输出 3 个选项
['define english', 'define math', 'define czech'] # 3 random elements are picked up
['define english', 'define spanish', 'define slovak', 'define math', 'define czech'] # no repeated questions, math and czech questions are appended coz they are not repeated.
通过设置 k = 1 随机输出 1 个选项
['define czech']
['define english', 'define spanish', 'define slovak', 'define czech']
成功完成
推荐阅读
- sql - 通过 SQL 类型转换获得的奇怪十进制值
- python - 如何在注册时注册此离线钱包?
- javascript - 包含对象数组和字符串数组的深拷贝道具
- symfony - webpack-encore .setPublicPath 相对忽略
- javascript - 如何在 vuejs 中单击按钮时打开 div 标签?
- python - ValueError:您正在尝试合并 object 和 int64 列。将类型更改为字符串但尚未解析
- java - 虽然 startActivity() 在 Android 9 中捕获错误验证类
- networking - 我的蜂窝网络的网关路由器在哪里
- python - 将数据框导出/导入为 Excel 工作表
- pytorch - PyTorch Geometric:分割训练/验证/测试以进行节点分类的功能实用程序是什么