[流程控制]:循环语句案例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)
}
代码执行结果如下: