加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[日常] Go语言圣经--Map习题

发布时间:2020-12-16 19:36:04 所属栏目:大数据 来源:网络整理
导读:练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。 练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样

练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。

练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样可以按单词而不是按行输入。

<div class="cnblogs_Highlighter">
<pre class="brush:go;gutter:true;">// Charcount computes counts of Unicode characters.
package main

import (
"bufio"
"fmt"
"io"
"os"
"unicode"
"unicode/utf8"
)

func main() {
//counts := make(map[string]map[rune]int) // counts of Unicode characters
var utflen [utf8.UTFMax + 1]int // count of lengths of UTF-8 encodings
invalid := 0 // count of invalid UTF-8 characters

letters := make(map[rune]int)
numbers := make(map[rune]int)
in := bufio.NewReader(os.Stdin)
for {
    r,n,err := in.ReadRune() // returns rune,nbytes,error
    if err == io.EOF {
        break
    }
    if err != nil {
        fmt.Fprintf(os.Stderr,"charcount: %vn",err)
        os.Exit(1)
    }
    if r == unicode.ReplacementChar &amp;&amp; n == 1 {
        invalid++
        continue
    }
    /*
    练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。
    */
    //判断是字母
    if unicode.IsLetter(r){ 
            letters[r]++
    }
    //判断是数字
    if unicode.IsNumber(r){
            numbers[r]++
    }
    //counts[r]++
    utflen[n]++
}
fmt.Printf("runetcountn")
for c,n := range letters {
    fmt.Printf("%qt%dn",c,n)
}
fmt.Printf("rune(number)tcountn")
for c,n := range numbers {
    fmt.Printf("%qt%dn",n)
}

fmt.Print("nlentcountn")
for i,n := range utflen {
    if i > 0 {
        fmt.Printf("%dt%dn",i,n)
    }
}
if invalid > 0 {
    fmt.Printf("n%d invalid UTF-8 charactersn",invalid)
}

}

import (
"bufio"
"fmt"
//"io"
"os"
//"unicode"
//"unicode/utf8"
)

func main() {
counts := make(map[string]int)
input := bufio.NewScanner(os.Stdin)
input.Split(bufio.ScanWords)
for input.Scan(){
counts[input.Text()]++
}
for k,v :=range counts{
fmt.Printf("%s == %d n",k,v)
}
}
/
练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样可以按单词而不是按行输入。
/

  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读