[流程控制]:循环语句案例1
python 和 golang 中的 循环语句案例1。
> 需求
首先生成一个1-100之间的随机数,然后构造一个死循环,用户可以选择进行猜数游戏,也可以选择退出,如果用户猜得不对,对应返回 “猜大了” “猜小了” ,如果用户猜对了,则退出循环,结束程序。
> 实现
- python
import random
targets = random.randint(1,100)
while True:
    msg = input("猜数游戏,输入(q/Q)可退出: ")
    msg = msg.strip()
    if msg.upper() == "Q":
        print("游戏退出...")
        break
    if not msg.isdecimal():
        print("应输入数字!")
        continue
    guess = int(msg)
    if guess > targets:
        print("猜大了")
    elif guess < targets:
        print("猜小了")
    else:
        print("猜对了")
        break
print("游戏结束,答案为:",targets)
代码执行结果如下:
- golang
package main
import (
	"bufio"
	"fmt"
	"log"
	"math/rand" // 这个地方是包的导入路径,而非包的名称
	"os"
	"strconv"
	"strings"
	"time"
)
func main() {
	// 生成随机数
	seconds := time.Now().Unix()  // Unix时间戳
	rand.Seed(seconds)            // 不同的种子才能生成不同的随机数
	targets := rand.Intn(100) + 1 // 根据种子的情况,对应返回一个 1-100 之间的数
	// 构造死循环
	for {
		// 打印信息
		fmt.Print("猜数游戏,输入(q/Q)可退出: ")
		// 获取键盘输入
		reader := bufio.NewReader(os.Stdin)
		msg, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("输入错误")
			log.Fatal(err)
		}
		// 删除换行
		msg = strings.TrimSpace(msg)
		// 处理用户退出请求
		if strings.ToUpper(msg) == "Q" {
			fmt.Println("游戏退出...")
			break
		}
		// 转换为整数
		guess, err := strconv.Atoi(msg)
		if err != nil {
			fmt.Println("转换错误")
			log.Fatal(err)
		}
		// 判断
		if guess > targets {
			fmt.Println("猜大了")
		} else if guess < targets {
			fmt.Println("猜小了")
		} else {
			fmt.Println("猜对了")
			break
		}
	}
	fmt.Println("游戏结束,答案为:", targets)
}
代码执行结果如下: