Go程序练习-猜数字

177 阅读1分钟

package main

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

func guestNumber() int {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("Input a number: ")
	input, err := reader.ReadString('\n')
	if err != nil {
		log.Fatal(err)
	}
	input = strings.TrimSpace(input)
	guess, err := strconv.Atoi(input)
	if err != nil {
		log.Fatal(err)
	}
	return guess
}

func main() {
	seconds := time.Now().Unix()
	rand.Seed(seconds)
	fmt.Println("main")
	var target int
	maxTry := 10000
	// var i int = 0
	var hit = 0
	for i := 0; i < maxTry; i++ {
		target = rand.Intn(100) + 1
		if target == 0 {
			hit++
		}
	}
	fmt.Println("The target hits 0 rate is: ", hit, "/", maxTry)

	guess := guestNumber()
	var hitFlag = false

	var maxGuessTime = 8
	for count := 1; count < maxGuessTime; count++ {
		if guess == target {
			fmt.Println("You are correct!")
			hitFlag = true
			break
		} else if guess < target {
			fmt.Println("Less than target, try again! You can try", maxGuessTime-count, "times more")
			guess = guestNumber()
		} else if guess > target {
			fmt.Println("Greater than target, try again! You can try ", maxGuessTime-count, "times more")
			guess = guestNumber()
		}
	}

	if hitFlag {
		fmt.Println("Guess it!")
	} else {
		fmt.Println("Failed to guess")
	}
}