Python 其实就像搭积木,一行一行拼起来就行。
游戏规则
电脑随机生成一个 1~100 之间的整数,你来猜。
我们从最简单的版本开始,一步步往上加功能。
第一步:让电脑生成一个随机数
写程序的第一步,先想:电脑怎么产生一个随机数字?
Python 自带了 random 工具包,里面有个 randint 函数,可以生成指定范围内的整数。
import random
answer = random.randint(1, 100)
print("神秘数字已经生成好了,在 1 到 100 之间")
知识点:
import random 就是把随机数工具包拿过来用randint(a, b) 会生成一个 a 到 b 之间的整数,包含 a 和 b
第二步:让用户输入猜测的数字
有了答案,接下来要接收玩家的输入。用 input() 函数就能获取用户敲的内容。
import random
answer = random.randint(1, 100)
print("神秘数字已经生成好了,在 1 到 100 之间")
guess = input("请输入你猜的数字:")
guess = int(guess) # 把字符串转成整数
注意:input() 拿到的默认是文字(字符串),必须用 int() 转成数字才能比较大小。
第三步:判断猜大了还是猜小了
有了答案和猜测,就要做判断了,这就是编程里的「条件判断」——if...elif...else。
import random
answer = random.randint(1, 100)
print("神秘数字已经生成好了,在 1 到 100 之间")
guess = input("请输入你猜的数字:")
guess = int(guess)
if guess > answer:
print("猜大了!")
elif guess < answer:
print("猜小了!")
else:
print("恭喜你,猜对了!")
现在这个程序只能猜一次,猜不对就结束了,体验很差。我们需要让它可以反复猜。
第四步:加上循环,反复猜直到猜对
用 while True 做一个死循环,猜对了就 break 跳出循环。
import random
answer = random.randint(1, 100)
print("神秘数字已经生成好了,在 1 到 100 之间")
whileTrue:
guess = input("请输入你猜的数字:")
guess = int(guess)
if guess > answer:
print("猜大了!")
elif guess < answer:
print("猜小了!")
else:
print("恭喜你,猜对了!")
break# 猜对了,跳出循环
到这里,一个能玩的猜数字游戏就完成了。但还可以更完善。
第五步:限制猜测次数,增加挑战性
无限猜太简单了,我们加个次数限制,比如给 7 次机会,用完就游戏结束。
import random
answer = random.randint(1, 100)
print("神秘数字已经生成好了,在 1 到 100 之间")
print("你一共有 7 次机会")
count = 0# 记录猜了几次
while count < 7:
guess = input("请输入你猜的数字:")
guess = int(guess)
count += 1# 次数加1
if guess > answer:
print(f"猜大了!还剩 {7 - count} 次机会")
elif guess < answer:
print(f"猜小了!还剩 {7 - count} 次机会")
else:
print(f"恭喜你,猜对了!你用了 {count} 次")
break
else:
# while 循环正常结束(没被 break 打断)就会走这里
print(f"机会用完了,正确答案是 {answer},下次加油!")
小技巧:f"..." 是 f-string,可以直接把变量塞进字符串里,非常方便。
第六步:处理异常输入,程序不崩溃
如果用户输入的不是数字,比如输入了「abc」,int() 转换会报错,程序直接崩掉。
我们用 try...except 来捕获错误,让程序更健壮。
import random
answer = random.randint(1, 100)
print("神秘数字已经生成好了,在 1 到 100 之间")
print("你一共有 7 次机会")
count = 0
while count < 7:
guess_str = input("请输入你猜的数字:")
# 尝试转成数字,转失败就提示重新输入
try:
guess = int(guess_str)
except ValueError:
print("请输入有效的整数哦!")
continue# 跳过本次循环,不消耗次数
count += 1
if guess > answer:
print(f"猜大了!还剩 {7 - count} 次机会")
elif guess < answer:
print(f"猜小了!还剩 {7 - count} 次机会")
else:
print(f"恭喜你,猜对了!你用了 {count} 次")
break
else:
print(f"机会用完了,正确答案是 {answer},下次加油!")
完整最终版代码
下面是整合好的完整版本,复制到你的 Python 环境里就能直接运行。
import random
defguess_number_game():
answer = random.randint(1, 100)
max_times = 7
count = 0
print("=" * 30)
print("欢迎来到猜数字游戏!")
print("我已经想好了一个 1~100 之间的整数")
print(f"你共有 {max_times} 次猜测机会")
print("=" * 30)
while count < max_times:
user_input = input(f"\n第 {count + 1} 次猜测,请输入数字:")
# 输入合法性校验
try:
guess = int(user_input)
except ValueError:
print("输入无效,请输入一个整数!")
continue
# 范围校验
if guess < 1or guess > 100:
print("数字必须在 1 到 100 之间哦")
continue
count += 1
# 判断结果
if guess > answer:
print(f"猜大了!", end=" ")
elif guess < answer:
print(f"猜小了!", end=" ")
else:
print(f"\n太棒了!你猜对了,答案就是 {answer}")
print(f"你一共用了 {count} 次机会")
return
# 显示剩余次数
remaining = max_times - count
if remaining > 0:
print(f"还剩 {remaining} 次机会")
# 次数用完
print(f"\n很遗憾,{max_times} 次机会都用完了")
print(f"正确答案是:{answer}")
# 启动游戏
if __name__ == "__main__":
guess_number_game()
这篇文章你学到了什么
一个小小的猜数字游戏,覆盖了 Python 最核心的基础语法:
- 模块导入:
import random 调用系统工具 - 输入输出:
input() 获取输入,print() 打印结果 - 条件判断:
if / elif / else 分支逻辑 - 循环结构:
while 循环 + break 跳出 + continue 跳过
这些就是 Python 的「基本功」,几乎所有 Python 程序都是由这些元素组合而成的。
留给你的小作业
试着在这个基础上再加一点功能:
- 游戏结束后问「要不要再来一局?」,输入 y 就重新开始
- 增加难度选择:简单模式 10 次,困难模式 5 次
- 猜中后根据次数给出评价:「大神」「不错」「勉强及格」
动手改一改,编程就是越写越熟练的。