编写一个go语言程序,要求用户输入一段文本,程序统计每个单词出现的频率并按照频率排序输出
时间: 2024-10-18 09:03:30 浏览: 54
在Go语言中,你可以使用`bufio`包处理用户的输入,并结合`strings`和`map`数据结构来统计单词频率。下面是一个简单的示例程序,它会读取用户输入的文本,分割单词并计算每个单词的出现次数:
```go
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("请输入文本: ")
text, _ := reader.ReadString('\n') // Read until newline
text = strings.TrimSpace(text) // Remove leading/trailing whitespace
wordCount := make(map[string]int)
splitWords := strings.Fields(text) // Split the text into words
for _, word := range splitWords {
wordCount[word]++ // Increment count for each word
}
// Sort words by frequency in descending order
type kv struct{ Key string; Value int }
var sorted []kv
for k, v := range wordCount {
sorted = append(sorted, kv{k, v})
}
sort.Slice(sorted, func(i, j int) bool { return sorted[i].Value > sorted[j].Value })
// Output the result
fmt.Println("单词按频率排序:")
for _, kv := range sorted {
fmt.Printf("%s: %d\n", kv.Key, kv.Value)
}
}
```
当你运行这个程序,输入一段文本,然后它将打印出各个单词及其出现的频率,按照频率从高到低排序。
阅读全文