猜数字游戏|豆包MarsCode AI刷题

2 阅读2分钟

在Go语言实战案例中,利用Go语言编写了一个猜数字的小游戏。它的主要功能是生成一个0到99之间的随机数,并让用户通过输入来猜测这个数字。以下是代码的详细解释: 1.导入包

import (
    "bufio"
    "fmt"
    "math/rand"
    "os"
    "strconv"
    "strings"
    "time"
)

这里导入了多个包,包括用于输入输出的bufio、fmt、os,用于生成随机数的math/rand,用于字符串处理的strings和strconv,以及用于时间处理的time。 2.主函数

func main() {
    //... 省略部分代码...
}

主函数是程序的入口点。 3.设置最大数和随机数

maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)

这里设置了最大数字为100,并使用当前时间的纳秒数作为随机数生成器的种子,然后生成一个0到99之间的随机数作为秘密数字。 4.提示用户输入猜测

fmt.Println("Please input your guess")

打印提示信息,让用户输入猜测的数字。 5.创建读取器

reader := bufio.NewReader(os.Stdin)

创建一个bufio.Reader,用于从标准输入读取用户的输入。 6.循环读取用户输入并验证

for {
    //... 省略部分代码...
}

使用一个无限循环来不断读取用户的输入,并进行验证。 7.读取用户输入

input, err := reader.ReadString('\n')

从标准输入读取一行文本,直到遇到换行符为止。 8.处理读取错误

if err!= nil {
    fmt.Println("An error occured while reading input. Please try again", err)
    continue
}

如果读取过程中发生错误,打印错误信息并继续循环。 9.去除输入中的换行符

input = strings.Trim(input, "\r\n")

使用strings.Trim函数去除输入字符串的首尾空格和换行符。 10.将输入转换为整数

guess, err := strconv.Atoi(input)

使用strconv.Atoi函数将输入的字符串转换为整数。 11.处理转换错误

if err!= nil {
    fmt.Println("Invalid input. Please enter an integer value")
    continue
}

如果转换过程中发生错误,打印错误信息并继续循环。 12.验证猜测结果

fmt.Println("You guess is", guess)
if guess > secretNumber {
    fmt.Println("Your guess is bigger than the secret number. Please try again")
} else if guess < secretNumber {
    fmt.Println("Your guess is smaller than the secret number. Please try again")
} else {
    fmt.Println("Correct, you Legend!")
    break
}

打印用户的猜测,并根据猜测结果给出相应的提示。如果猜测正确,打印祝贺信息并跳出循环。