时间限制:1.000S  空间限制:32MB

题目描述

每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。

输入描述

有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。

输出描述

每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。

输入示例
A B C D F
B F F C C A
D C E F
输出示例
2.00
1.83
Unknown

答案

package main
 
import (
    "bufio"
    "os"
    "fmt"
    "strings"
)
 
var (
    levels = map[byte]float64{
        'A': 4,
        'B': 3,
        'C': 2,
        'D': 1,
        'F': 0,
    }
    arr []string
    sum float64
    isUnknown bool
)
 
func main() {
    input := bufio.NewScanner(os.Stdin)
    for input.Scan() {
        arr = strings.Split(input.Text(), " ")
        for _, v := range arr {
            if count, has := levels[v[0]]; has {
                sum += count
            } else {
                isUnknown = true
                break
            }
        }
        if isUnknown {
            fmt.Println("Unknown")
        } else {
            fmt.Printf("%.2f\n", sum / float64(len(arr)))
        }
        sum = 0
        isUnknown = false
    }
}