【问题标题】:Randomizing key-value pairs from a hash从哈希中随机化键值对
【发布时间】:2017-03-17 01:31:27
【问题描述】:

我正在构建一个简单的词汇测验,它为用户提供来自预定散列的值,并将他或她的回答作为输入。如果用户的输入与该值的对应键匹配,则程序继续执行下一个值,并重复此过程,直到哈希中的所有键值对都已计算在内。

在当前状态下,测验从第一个到最后一个顺序提示用户哈希值。

但是,为了使测验更加困难,我希望测验提供哈希中的随机值,不按特定顺序。

简单的英语...如何让词汇测验从其库中随机输出定义,而不是每次都以相同的顺序打印相同的定义?

我的代码如下。非常感谢大家的帮助!

vocab_words = {
  "class" => "Tell Ruby to make a new type of thing",
  "object" => "Two meanings: The most basic type of thing, and any instance of some thing",
  "instance" => "What you get when you tell Ruby to create a class",
  "def" => "How you define a function inside a class"
}

vocab_words.each do |word, definition|
  print vocab_words[word] + ": "
  answer = gets.to_s.chomp.downcase

    while answer != "%s" %word
      if answer == "help"
        print "The answer is \"%s.\" Type it here: " %word
        answer = gets.to_s.chomp.downcase
      else
        print "Nope. Try again: "
        answer = gets.to_s.chomp.downcase
      end
    end
  end

【问题讨论】:

    标签: ruby hash hashmap each key-value


    【解决方案1】:

    使用:random_keys = vocab_words.keys.shuffle 像这样:

    vocab_words = {
      "class" => "Tell Ruby to make a new type of thing",
      "object" => "Two meanings: The most basic type of thing, and any instance of some thing",
      "instance" => "What you get when you tell Ruby to create a class",
      "def" => "How you define a function inside a class"
    }
    
    random_keys = vocab_words.keys.shuffle
    random_keys.each do |word|
      print vocab_words[word] + ": "
      answer = gets.to_s.chomp.downcase
    
      if answer == "help"
        print "The answer is \"%s.\" Type it here: " %word
        answer = gets.to_s.chomp.downcase
      else
        while answer != "%s" %word
          print "Nope. Try again: "
          answer = gets.to_s.chomp.downcase
        end
      end
    end
    

    【讨论】:

    • 非常感谢!使用了你的建议,效果很好。感谢您的帮助。
    猜你喜欢
    • 2011-10-04
    • 2015-08-15
    • 2013-06-17
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多