Python-4 条件控制&循环语句-猜数字游戏

1 杂谈

又见面了,很高兴我的粉丝达到了88名,又是动力满满的一天呢。今天我给大家带来的是一个猜数字游戏的程序设计

2 任务描述

编写一个Python函数来实现一个简单的猜数字游戏。函数应该生成一个1到100之间的随机数,然后让用户猜这个数字。每次猜测后,函数应该告诉用户他们的猜测是太高、太低还是正确。用户应该有最多10次猜测的机会。

3 问题剖析

要想解决这个问题,有几个关键点需要注意:

  • 首先要生成一个随机数,这需要导入随机数相关的库–random;
  • 猜测的数字需要键入,但是在此之前为了保证代码整体的鲁棒性,我们需要先检验用户键入的是否为整数(否则用户键入非整数时代码会报错崩溃);
  • 控制用户的猜测机会数,这需要一个循环体。

4 程序设计

4.1 导入模块

import random

这一行代码导入了Python标准库中的random模块,提供了生成随机数的功能。该模块中的randint()函数将在后面的代码中用于生成一个随机数。

4.2 定义函数

def guess_number():

这行代码定义了一个名为guess_number的函数,用于实现整个猜数字游戏的逻辑。

4.3 生成随机数

number = random.randint(1, 100)

这里使用random.randint(1, 100)生成一个1到100之间的随机整数,并将其赋值给变量number。这个数字就是玩家需要猜测的目标数字。

4.4 打印游戏介绍信息

print("我想了一个1到100之间的数字,你有10次机会猜它。")

这一行代码输出了一条信息,告诉玩家游戏的规则:系统生成了一个1到100之间的随机数字,玩家有10次机会猜测。

4.5 开始循环猜测

for chance in range(10):

for循环开始,range(10)生成从0到9的整数序列,总共10次循环。变量chance表示当前是第几次尝试。

4.6 捕获用户输入并处理异常

try:
    guess = int(input(f"请猜一个数字(还剩{10-chance}次机会):"))
except ValueError:
    print("请输入有效的数字!")
    continue
  • try块中的input()函数提示玩家输入一个数字,并将其转换为整数类型;
  • 如果玩家输入的不是有效的数字(例如字母或符号),会抛出ValueError异常,except块捕获这个异常,并提示玩家“请输入有效的数字!”,然后通过continue语句跳过当前循环,继续下一次猜测。

4.7 判断猜测结果

if guess == number:
    print(f"恭喜你,猜对了!")
    return
elif guess < number:
    print("太低了!")
else:
    print("太高了!")
  • 首先,代码检查玩家猜测的数字guess是否与目标数字number相等。如果相等,则玩家猜对了,程序输出“恭喜你,猜对了!”,然后使用return结束函数执行;
  • 如果猜测的数字小于目标数字,输出“太低了!”,提示玩家猜的数字太小;
  • 如果猜测的数字大于目标数字,输出“太高了!”,提示玩家猜的数字太大。

4.8 猜测次数用完后的提示

print(f"很遗憾,你没有猜对。正确答案是{number}。")

如果玩家在10次猜测机会内没有猜对数字,循环结束后输出“很遗憾,你没有猜对。正确答案是{number}。”,并告诉玩家正确答案。

4.9 调用游戏开始游戏

guess_number()

最后一行代码调用了guess_number()函数,启动猜数字游戏。

5 全部代码

#题目:猜数字游戏
  
import random

def guess_number():
    number = random.randint(1, 100)
    print("我想了一个1到100之间的数字,你有10次机会猜它。")
    
    for chance in range(10):
        try:
            guess = int(input(f"请猜一个数字(还剩{10-chance}次机会):"))
        except ValueError:
            print("请输入有效的数字!")
            continue
        
        if guess == number:
            print(f"恭喜你,猜对了!")
            return
        elif guess < number:
            print("太低了!")
        else:
            print("太高了!")
    
    print(f"很遗憾,你没有猜对。正确答案是{number}。")

guess_number()

6 先验知识

6.1 随机数生成方式

语法结构如下:

number = random.randint(first, end)

其中,first为生成随机数的下界,end为生成随机数的上界。number储存的是一个从firstend的随机整数。

6.2 异常处理–try…except语句

在Python中,try...except语句用于处理可能在运行时出现的异常。其基本语法结构如下:

try:
    # 可能会引发异常的代码块
    risky_code()
except SomeException as e:
    # 当捕获到SomeException异常时,执行的代码块
    handle_exception(e)
  • try:
    尝试执行代码块。如果代码块中发生了异常,程序会立即跳到except块,并跳过try块中剩下的代码;
  • except SomeException as e:
    如果在try块中发生了SomeException异常,执行except块中的代码。SomeException可以是Python内置的异常类型(如ValueError, TypeError等)或自定义的异常类型。as e部分是可选的,用于获取异常实例,并赋值给变量e,这样可以在except块中访问异常的详细信息。

这段代码可以保证代码整体的鲁棒性,不会因为用户输入的不是整数而运行不出来。

6.3 字符串格式化方法

f"" 字符串使用前缀 fF,并允许在字符串内部直接嵌入表达式。这些表达式会在运行时求值,然后插入到字符串中。比如:

name = "Alice"
age = 30
greeting = f"Hello, {name}! You are {age} years old."
print(greeting)

输出:

Hello, Alice! You are 30 years old.

。比如:

name = "Alice"
age = 30
greeting = f"Hello, {name}! You are {age} years old."
print(greeting)

输出:

Hello, Alice! You are 30 years old.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值