这是我参与「第五届青训营」伴学笔记创作活动的第4天。
猜谜游戏
程序随机生成一个0-100之间的整数,由用户进行猜测,程序会根据用户的输入给出相应的提示(猜测数字大于或小于准确数字),直到用户猜测正确。
生成随机数
maxNum := 100
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)
运行后会发现每次结果都是一样的。
在使用rand.Intn(maxNum)之前需要设置随机数种子
maxNum := 100
rand.Seed(time.Now().UnixNano()) //用时间戳来初始化随机数种子
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)
设置随机数种子后,每次运行结果都不同。
读取用户输入
fmt.Println("Please input your guess")
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n') //读取一行输入
if err != nil {
fmt.Println("An error occured while reading input. Please try again", err)
return
}
input = strings.Trim(input, "\r\n") // 去掉换行符
guess, err := strconv.Atoi(input) //转换成数字
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
return
}
fmt.Println("You guess is", guess)
}
实现判断逻辑
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!")
}
完整代码
package main
import (
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"strings"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano()) // 随机数种子
secretNumber := rand.Intn(maxNum)
// fmt.Println("The secret number is ", secretNumber)
fmt.Println("Please input your guess")
reader := bufio.NewReader(os.Stdin) //读取一行输入
for {
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occured while reading input. Please try again", err)
continue
}
input = strings.Trim(input, "\r\n")
guess, err := strconv.Atoi(input)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
continue
}
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
}
}
}