红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
Awalon
Talk is cheap,show me the code.
  1. 首页
  2. 专栏
  3. Go语言编程笔记
  4. 正文

Go语言编程笔记番外1:猜数游戏

2021年11月8日 285点热度 0人点赞 0条评论

image-20211108153040805

图源:wallpapercave.com

这是一个常见的用于练习编程基础的一个小游戏:生成一个100以内的随机数,用户在一定的次数内猜测数字是多少,每次提示猜测结果是高了还是低了,直到最终猜到结果获胜或者失败。

本篇笔记的思路和动机都来自《Head First Go》。

package main
​
import (
    "bufio"
    "fmt"
    "log"
    "math/rand"
    "os"
    "strconv"
    "strings"
    "time"
)
​
var reader = bufio.NewReader(os.Stdin)
​
func main() {
    rand.Seed(time.Now().Unix())
    targetNum := rand.Intn(100) + 1 //产生的随机数是0-99,这里+1
    var success bool
    const TOTAL_TIMES = 10 //总的尝试次数
    for i := 0; i < TOTAL_TIMES; i++ {
        var leftTimes int = TOTAL_TIMES - i
        fmt.Printf("Please enter a number(%d times left):", leftTimes)
        inputNum := inputInt()
        if inputNum < targetNum {
            fmt.Println("low")
        } else if inputNum > targetNum {
            fmt.Println("hight")
        } else {
            fmt.Println("Success! You win!")
            success = true
            break
        }
    }
    if !success {
        fmt.Printf("You failed, the target number is %d.Please try again", targetNum)
    }
}
​
func inputInt() int {
    strNum, err := reader.ReadString('\n') //从命令行读取数据,换行为止
    if err != nil {
        log.Fatal(err)
    }
    strNum = strings.TrimSpace(strNum) //去除结尾的换行符
    num, err := strconv.Atoi(strNum)   //将字符串转换为int
    if err != nil {
        log.Fatal(err)
    }
    return num
}

好像也没啥可以说的,不过作为一个阶段性的小练习来说还是不错的。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Go语言
最后更新:2021年11月22日

魔芋红茶

加一点PHP,加一点Go,加一点Python......

点赞
< 上一篇
下一篇 >

文章评论

取消回复

*

code

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号