gpt4 book ai didi

vb.net - 如何建立这个列表并将其随机化?

转载 作者:行者123 更新时间:2023-12-02 03:37:54 25 4
gpt4 key购买 nike

我正在为我的计算机科学课做一个测验,基本概念是你有 15 个关键字和 15 个定义。都需要随机显示,并且必须出现正确答案。用户必须将正确的定义与关键字匹配两次,然后不会再次显示该关键字和定义。当所有问题都被回答两次后,测验就结束了。

我已将关键字和定义存储在同一个文件中,以免它们不同步。文本文件如下所示:

Keyword1 = Definition1
Keyword2 = Definition2
Keyword3 = Definition3

等(共15个)

我的主窗体是这样的:

Public Class quiz
Private Sub quiz_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles myBase.Load

Dim MyList As List(Of KeyValuePair(Of String, String)) = New List(Of String, String))
For Each line As String In System.IO.File.ReadAllLines("my-file-path")
Dim Pair() As String = line.split("=")
mylist.add(New KeyValuePair(Of String, String)(Pair(0), Pair(1)))
Next

我在标签中显示随机关键字,在单选按钮中显示定义。两个需要是随机定义,一个必须是显示关键字的正确定义,也需要随机显示。

我想问的是:

  1. 我如何完成此列表,因为它仅使用最后一行覆盖其他 15 行?
  2. 如何随机显示关键字和定义列表?
  3. 当每个关键字与其定义匹配两次时,如何删除项目?例如:关键字 1 和定义 1 已被正确回答两次,因此从列表中删除它不会再次显示。

最佳答案

这应该给你一个想法:

Const NUMBER_OF_ANSWERS As Integer = 3

Dim kv As New Dictionary(Of String, String)
kv.Add("Keyword1", "Definition1")
kv.Add("Keyword2", "Definition2")
kv.Add("Keyword3", "Definition3")

Dim r As New Random
Dim kvRandom As List(Of KeyValuePair(Of String, String)) =
kv.OrderBy(Function() r.Next).ToList

'questions will appear in random order
For Each line As KeyValuePair(Of String, String) In kvRandom
Dim keyword As String = line.Key
Dim correctDefinition As String = line.Value

Dim keywords As New List(Of String)
keywords.Add(keyword)
keywords.AddRange(kv.Keys.Except({keyword}).
OrderBy(Function() r.Next).Take(NUMBER_OF_ANSWERS - 1))

Dim definitionsRandom As List(Of String) =
keywords.Select(Function(x) kv(x)).OrderBy(Function() r.Next).ToList

'TODO: need to write some code here
'display keyword and three possible definitions to the user
'(out of which one is correct)
'answers will also appear in random order
'Check answer against value stored in "correctDefinition"
Next

该代码几乎不言自明,如果您有任何问题,请在评论中告诉我。

编辑:这是您可以从文件中填充字典的方法。

'assuming file structure is like this:
'keyword1,definition1
'keyword2,definition2
'keyword3,definition3
'...
For Each line As String In IO.File.ReadAllLines("keywords_and_definitions.txt")
Dim parts() As String = line.Split(",")
kv.Add(parts(0), parts(1))
Next

关于vb.net - 如何建立这个列表并将其随机化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22150900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com