我正在进行编码练习,想写一段代码,可以通过字典筛选,并返回得分最高的人的名字沿着他们的分数。这个问题使用了可选选项,我想确保在我的解决方案中考虑到了这一点?下面是一个例子:
如果你有一本字典,上面有3个学生的名字和他们的考试成绩,你能打印出最高的分数吗?例如,如果studentsAndscores = [“Amy”:88,“詹姆斯”:55,“海伦”:99]然后你的函数应该打印99。但是你不知道分数是多少,所以你的程序必须处理所有的可能性!提示:当你使用一个键从字典中获取值时,得到的值是一个Optional!
这是我在尝试了十几次之后得到的。不过,我还没找到解决办法。我得到了几个不同的错误,使我无法理解。
下面是我的代码:
given -> var studentsAndScores = ["Amy": Int(readLine()!)!, "James": Int(readLine()!)!, "Helen": Int(readLine()!)!]
given ->func highestScore(scores: [String: Int]) {
//Write your code here. (My code below)
for value in studentsAndScores.values {
if studentsAndScores[value] == 99 {
return("Key": String, Value: Int)
} else {
return(false)
}
}
}```
3条答案
按热度按时间qnzebej01#
你可以尝试如下:
但是我建议你应该修改你的代码,如下所示:
qacovj5a2#
你可以这样做。这种方法假设学生不能有一个负的测试分数。在函数内部,它选择0作为学生可以拥有的最低值。然后,每当它达到高于先前找到的最大值的值时,它更新最大值。因为这使用'>'而不是'>=',这将返回第一个找到最大分数的人和最大分数。
方法是循环遍历字典的所有键值对,在示例中是“Amy”、“James”和“Helen”,然后检查每个键值对的得分。我将键命名为“student”,将值命名为“scoreValue”。
我使用了您在示例中提供的值,而不是“Int(readLine()!)!”,但那只是为了更容易演示。如果这些函数正确地给予了数字,那么字典迭代应该可以完成任务。
祝Swift好运!
mrzz3bfm3#
我只需要使用一个
for
循环并检查/设置分数是否高于前一个;就像这样: