Number(数字)

在编程中,我们经常需要和各种数字打交道,比如统计分数、计算距离、处理金钱等等。Python 为我们提供了简洁而强大的工具来处理这些数字,这就是我们今天要认识的 Number(数字) 数据类型

一、什么是 Python 数字(Number)?

简单来说,Number 数据类型就是用来在计算机中存储和表示数值的。就像我们在纸上写下数字一样,计算机也需要一种方式来记住这些数字,Number 就是干这个的

1.1 数字是“不变的”

一个重要的点,数字类型的值一旦确定,就不能再被改变了。这意味着如果你想给一个数字变量赋新的值,计算机实际上是重新开辟了一块新的内存空间来存储这个新值,而不是在原来的地方修改

比如:

1
2
var1 = 1  # 这里创建了一个存储数字 1 的空间,并让 var1 指向它
var1 = 10 # 这里并没有修改原来存储 1 的空间,而是创建了一个存储 10 的新空间,然后让 var1 指向这个新空间

1.2 创建数字

创建数字变量很容易,直接给变量赋值就行

1
2
年龄 = 25       # 这是一个整数
身高 = 1.75 # 这是一个浮点数

1.3 删除数字引用

如果某个数字变量我们以后不再需要了,可以使用 del 语句来删除对它的引用。这样计算机就知道这块内存可以被回收再利用了

1
2
del 年龄       # 删除单个变量的引用
del var1, var2 # 可以同时删除多个变量的引用,用逗号隔开

二、Python 中的数字家族成员

Python 支持四种主要的数字类型,就像一个数字家族一样,各有各的特点和用处

2.1 整数 (Int - Integer)

  • 特点:不带小数点的正整数或负整数。
  • 例子10-2000987654321
  • 实际生活联系:人数、年龄、书本页码等

2.2 长整数 (Long integers)

  • 特点无限大小的整数!当普通整数不够用时,就用它。在数字的最后加上一个大写或小写的 L 来表示。建议用大写 L,避免和数字 1 混淆
  • 例子12345678901234567890L-9876543210987654321L0L
  • 注意:在较新版本的 Python 3 中,普通整数 int 已经可以表示任意大小的整数,所以 long 类型基本上被合并到 int 中了。但了解它对阅读旧代码有帮助

2.3 浮点数 (Floating point real values)

  • 特点:带小数点的数,或者用科学计数法表示的数。
  • 例子
    • 带小数点:3.14-0.001100.0
    • 科学计数法:2.5e2 表示 2.5 x 10² = 2501.23e-3 表示 1.23 x 10⁻³ = 0.00123
  • 实际生活联系:身高(1.75米)、体重(62.5公斤)、圆周率(3.14159…)等等

2.4 复数 (Complex numbers)

  • 特点:这个有点高级,是由实数部分虚数部分组成的数
  • 表示方法
    • 和高中数学中的学习一样。a + bj:其中 a 是实部,b 是虚部,j 表示虚数单位(满足 j² = -1)。
    • complex(a, b):使用内置函数 complex 来创建,ab 都是浮点数。
  • 例子3+4j-0.5+2.7j45.j.876jcomplex(2, -3) (表示 2 - 3j)
  • 实际生活联系:主要用于科学计算、工程领域等。初学者可以先了解一下,后续深入学习时会用到

三、数字类型之间类型转换

有时候,我们需要把一种类型的数字转换成另一种类型,比如把浮点数 3.14 变成整数 3,或者把整数 5 变成浮点数 5.0。Python 提供了方便的变身函数。

3.1 常用的类型转换函数

函数名 功能描述
int(x [, base]) x 转换为一个整数base 是可选参数,表示 x 的进制(如 2 进制、10 进制、16 进制)。
long(x [, base]) x 转换为一个长整数。(在 Python 3 中已基本被 int 取代)
float(x) x 转换为一个浮点数
complex(real [, imag]) 创建一个复数real 是实部,imag 是虚部(可选,默认为 0)。
str(x) 将对象 x 转换为字符串。(字符串我们后面会详细讲)
repr(x) 将对象 x 转换为一个表达式字符串,通常看起来更像 Python 代码。
eval(str) 计算字符串 str 中有效的 Python 表达式,并返回计算结果(一个对象)。
chr(x) 将一个整数(ASCII码)转换为对应的字符
ord(x) 将一个字符转换为对应的ASCII整数
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

3.2 转换小示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 整数转换
print(int(3.14)) # 结果是 3 (会丢掉小数部分,不是四舍五入哦!)
print(int("123")) # 结果是 123 (字符串里是数字才能转)

# 浮点数转换
print(float(5)) # 结果是 5.0
print(float("3.14"))# 结果是 3.14

# 复数转换
print(complex(3, 4))# 结果是 (3+4j)
print(complex(5)) # 结果是 (5+0j)

# 转为字符串
print(str(123)) # 结果是 "123" (这是一个字符串类型了)

# 字符与ASCII码转换
print(chr(65)) # 结果是 'A' (因为 ASCII 码 65 对应大写字母 A)
print(ord('a')) # 结果是 97 (因为小写字母 a 的 ASCII 码是 97)

# 进制转换
print(hex(255)) # 结果是 '0xff' (255的十六进制表示)
print(oct(8)) # 结果是 '0o10' (8的八进制表示)

math、cmath 模块

在 Python 中,除了我们之前学过的基本数字运算,有时候我们还需要进行更复杂的数学计算,比如开平方、求正弦值、计算圆周率等等。这些高级功能,Python 已经为我们准备好了两个强大的工具箱————**math 模块** 和 cmath 模块

一、math 模块

math 模块 就像是我们做实数数学题时的计算器,里面装满了各种常用的数学函数

1.1 如何使用 math 模块?

要使用 math 模块里的工具,第一步就是要打开这个工具箱,也就是 导入

1
import math  # 这行代码的意思是:把 math 这个工具箱拿过来,我们要用里面的东西了。

1.2 math 模块里有什么?

导入之后,我们可以用 dir(math) 命令(在 Python 交互式环境里)查看这个工具箱里具体有哪些工具(函数和常量)。
你会看到一长串名字,比如 acos, ceil, cos, e, pi, sqrt 等等。别担心,我会介绍常用的

一些常用的 math 模块函数和常量:

  • 常量 (Constants):

    • math.pi: 圆周率 π (约等于 3.141592653589793)
    • math.e: 自然常数 e (约等于 2.718281828459045)
    • math.inf: 表示无穷大 (infinity)
    • math.nan: 表示非数字 (Not a Number), 比如 0/0 的结果
  • 基本运算与舍入:

    • math.ceil(x): 向上取整。比如 math.ceil(3.2) 结果是 4math.ceil(-1.5) 结果是 -1
    • math.floor(x): 向下取整。比如 math.floor(3.8) 结果是 3math.floor(-1.2) 结果是 -2
    • math.fabs(x): 返回 x绝对值,结果是浮点数。比如 math.fabs(-5) 结果是 5.0
    • math.pow(x, y): 计算 xy 次方。比如 math.pow(2, 3) 结果是 8.0 (注意结果是浮点数)。
    • math.sqrt(x): 计算 x平方根。比如 math.sqrt(16) 结果是 4.0
  • 三角函数 (Trigonometric functions): (注意:这些函数的参数是弧度制的角)

    • math.sin(x): 正弦函数
    • math.cos(x): 余弦函数
    • math.tan(x): 正切函数
    • math.radians(x): 将角度转换为弧度。比如 math.radians(180) 结果是 π (约 3.1415…)。
    • math.degrees(x): 将弧度转换为角度。比如 math.degrees(math.pi) 结果是 180.0
  • 对数函数:

    • math.log(x): 返回 x 的自然对数 (以 e 为底)。
    • math.log10(x): 返回 x 的常用对数 (以 10 为底)。
  • 其他常用:

    • math.factorial(x): 计算 x阶乘 (x! )。比如 math.factorial(5) 结果是 120 (54321)。
    • math.gcd(a, b): 计算 ab最大公约数。比如 math.gcd(12, 18) 结果是 6

1.3 math 模块使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import math  # 导入 math 模块

# 使用常量
print("圆周率 π 的值是:", math.pi) # 输出: 圆周率 π 的值是: 3.141592653589793
print("自然常数 e 的值是:", math.e) # 输出: 自然常数 e 的值是: 2.718281828459045

# 向上取整和向下取整
print("math.ceil(2.3) =", math.ceil(2.3)) # 输出: math.ceil(2.3) = 3
print("math.floor(2.7) =", math.floor(2.7)) # 输出: math.floor(2.7) = 2

# 平方根
print("16 的平方根是:", math.sqrt(16)) # 输出: 16 的平方根是: 4.0

# 幂运算
print("2 的 3 次方是:", math.pow(2, 3)) # 输出: 2 的 3 次方是: 8.0

# 三角函数 (计算 30 度角的正弦值)
angle_deg = 30
angle_rad = math.radians(angle_deg) # 先将角度转换为弧度
sin_value = math.sin(angle_rad)
print(f"{angle_deg}度角的正弦值是:", sin_value) # 输出: 30度角的正弦值是: 0.49999999999999994 (约等于 0.5)

# 阶乘
print("5 的阶乘是:", math.factorial(5)) # 输出: 5 的阶乘是: 120

二、cmath 模块

cmath 模块math 模块的兄弟,但它专门用来处理 复数 的运算。复数由实部和虚部组成,比如 3+4j

2.1 如何使用 cmath 模块?

math 模块一样,使用前需要导入:

1
import cmath  # 导入 cmath 模块,用于复数运算

2.2 cmath 模块里有什么?

cmath 模块提供的函数名称和 math 模块非常相似,比如 sin, cos, sqrt 等。最大的区别是,cmath 函数的参数和返回值通常都是 复数

你也可以用 dir(cmath) 查看它的内容。会看到很多和 math 模块相同的函数名,以及一些复数特有的,比如 phase, polar, rect, infj, nanj

一些 cmath 模块的特点和常用函数:

  • 常量:

    • cmath.e: 同 math.e (自然常数)
    • cmath.pi: 同 math.pi (圆周率)
    • cmath.inf: 复数的正无穷大 (实部为无穷大,虚部为 0j)
    • cmath.infj: 虚部的正无穷大 (实部为 0.0,虚部为无穷大)
    • cmath.nan: 复数的非数字 (实部为 nan,虚部为 0j)
    • cmath.nanj: 虚部的非数字 (实部为 0.0,虚部为 nan)
  • 常用函数 (与 math 类似,但处理复数):

    • cmath.sqrt(x): 计算 x 的平方根。即使 x 是负数,也能得到复数结果。
      • 例如:cmath.sqrt(-1) 的结果是 1j (这就是虚数单位 i)。
      • 例如:cmath.sqrt(9) 的结果是 (3+0j)
    • cmath.sin(z), cmath.cos(z), cmath.tan(z): 复数的正弦、余弦、正切。
    • cmath.exp(z): 计算 e 的 z 次方。
  • 复数特有函数:

    • cmath.phase(z): 返回复数 z相位角 (辐角),以弧度表示。
    • cmath.polar(z): 将复数 z直角坐标形式 (a+bj) 转换为**极坐标形式 (r, phi)**,返回一个元组 (模长 r, 相位角 phi)
    • cmath.rect(r, phi): 将复数从极坐标形式 (r, phi) 转换为**直角坐标形式 (a+bj)**。

2.3 cmath 模块使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import cmath  # 导入 cmath 模块

# 计算负数的平方根 (这在 math 模块里会出错!)
print("负数 -1 的平方根是:", cmath.sqrt(-1)) # 输出: 负数 -1 的平方根是: 1j
print("9 的平方根是:", cmath.sqrt(9)) # 输出: 9 的平方根是: (3+0j) (结果是复数形式)

# 复数的正弦值
z = 1 + 2j
print(f"复数 {z} 的正弦值是:", cmath.sin(z)) # 输出一个复数结果

# 计算 100 的常用对数 (结果也是复数形式)
print("100 的常用对数是:", cmath.log10(100)) # 输出: 100 的常用对数是: (2+0j)

# 复数的相位角
z = 3 + 4j
print(f"复数 {z} 的相位角是:", cmath.phase(z)) # 输出: 复数 (3+4j) 的相位角是: 0.9272952180016122 弧度

三、两者的对比

特性 math 模块 cmath 模块
处理对象 主要处理实数 (int, float) 专门处理复数 (complex)
输入 通常接受实数输入 可以接受实数或复数输入
输出 通常返回实数 (float 或 int) 通常返回复数 (complex)
典型用途 日常数学计算,科学计算(实数) 复数相关的数学运算,工程计算等

一些提醒

  • 如果你尝试用 math.sqrt(-1) 计算负数的平方根,Python 会报错!因为 math 模块不处理复数。这时候就该 cmath.sqrt(-1) 登场了
  • 即使你给 cmath 函数传入一个实数,它也会返回一个复数,因为虚部为0

数字函数

一、Python 基础数学函数

这些函数是我们进行日常数学计算的得力助手。记得,大部分函数需要先 import math 才能使用

函数名 描述 (返回值) 示例 (假设已 import math)
abs(x) 返回数字 x绝对值。整数、浮点数都可以。 abs(-10) → 10abs(3.14) → 3.14abs(-2.5) → 2.5
math.ceil(x) 向上取整:返回大于或等于 x 的最小整数。 math.ceil(4.1) → 5math.ceil(4.9) → 5math.ceil(-3.2) → -3
math.floor(x) 向下取整:返回小于或等于 x 的最大整数。 math.floor(4.1) → 4math.floor(4.9) → 4math.floor(-3.2) → -4
math.fabs(x) 返回数字 x绝对值,但结果一定是浮点数abs() 更通用。 math.fabs(-10) → 10.0math.fabs(3) → 3.0
math.exp(x) 返回自然常数 e 的 x 次方 (eˣ)。 math.exp(1) → 2.718281828459045 (约等于 e), math.exp(0) → 1.0
math.log(x) 返回 x自然对数 (以 e 为底)。 math.log(math.e) → 1.0math.log(1) → 0.0
math.log10(x) 返回 x常用对数 (以 10 为底)。 math.log10(10) → 1.0math.log10(100) → 2.0math.log10(0.1) → -1.0
max(x1, x2, ...) 返回给定参数中的最大值,参数可以是多个数字。这是 Python 的内置函数,不需要 math max(1, 3, 2) → 3max(-5, -1) → -1
min(x1, x2, ...) 返回给定参数中的最小值,参数可以是多个数字。这是 Python 的内置函数,不需要 math min(1, 3, 2) → 1min(-5, -1) → -5
math.modf(x) 返回 x小数部分和整数部分,两部分的符号都与 x 相同,并且都是浮点数。返回一个元组 (小数部分, 整数部分) math.modf(3.14) → (0.14000000000000012, 3.0)math.modf(-2.5) → (-0.5, -2.0)
math.pow(x, y) 返回 xy 次方 (xʸ)。结果是浮点数。 math.pow(2, 3) → 8.0math.pow(10, -2) → 0.01
round(x [, n]) 返回浮点数 x四舍五入值。如果指定 n,则表示四舍五入到小数点后第 n 位。这是 Python 的内置函数。 round(3.1415) → 3round(3.1415, 2) → 3.14round(2.5) → 2 (注意:Python 的四舍五入对 .5 的处理是向偶数靠拢)
math.sqrt(x) 返回数字 x平方根。结果是浮点数。 x 必须是非负数。 math.sqrt(16) → 4.0math.sqrt(2) → 1.4142135623730951

小提示: abs(), max(), min(), round() 是 Python 的内置函数,可以直接使用,不需要 import math。其他以 math. 开头的则需要先导入 math 模块。

二、Python 随机数函数

随机数在游戏、模拟、密码学等方面非常有用。使用这些函数前,需要导入 random 模块:import random

函数名 描述 示例 (假设已 import random)
random.choice(seq) 非空序列 seq (如列表、元组、字符串) 的元素中随机挑选一个元素 random.choice([1, 2, 3, 4]) → 可能是 3random.choice("hello") → 可能是 'e'random.choice(range(10)) → 可能是 7 (从0-9选)
random.randrange([start,] stop [, step]) 从指定范围内,按指定基数 (step) 递增的集合中获取一个随机整数start 可选 (默认0),step 可选 (默认1)。 random.randrange(10) → 0-9 间的一个随机整数random.randrange(1, 10, 2) → 1,3,5,7,9 中随机一个
random.random() 随机生成一个 [0.0, 1.0) 范围内的实数 (包含0.0,不包含1.0)。 random.random() → 可能是 0.456789...
random.seed([x]) 设置随机数生成器的种子。种子相同,每次生成的随机数序列就相同。如果不设置,Python 会用系统时间等作为默认种子。用于复现随机结果。 random.seed(10), 之后调用的随机函数结果就会固定。
random.shuffle(lst) 将列表 lst 的所有元素原地随机排序 (会修改原列表)。 a = [1,2,3]; random.shuffle(a); print(a) → 可能是 [3,1,2]
random.uniform(x, y) 随机生成一个 [x, y] 范围内的实数 (包含 x 和 y,x 和 y 可以是整数或浮点数,且 x 可以大于 y)。 random.uniform(1, 5) → 可能是 3.2random.uniform(5, 1) → 可能是 2.8

示例:

1
2
3
4
5
6
7
8
9
import random

print("随机选择一个水果:", random.choice(["苹果", "香蕉", "橙子"]))
print("1-100间的随机偶数:", random.randrange(2, 101, 2))
print("随机小数 [0,1):", random.random())
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print("打乱后的列表:", numbers)
print("1到10之间的随机实数:", random.uniform(1, 10))

三、Python 三角函数

三角函数用于计算角度相关的值。所有三角函数的参数和返回值都是以弧度为单位的。使用前需导入 math 模块。

函数名 描述 示例 (假设已 import math)
math.acos(x) 返回 x反余弦弧度值x 的取值范围是 [-1, 1]。 math.acos(1) → 0.0 (弧度), math.acos(0) → 1.5707963267948966 (π/2 弧度,即90度)
math.asin(x) 返回 x反正弦弧度值x 的取值范围是 [-1, 1]。 math.asin(0) → 0.0math.asin(1) → 1.5707963267948966 (π/2 弧度)
math.atan(x) 返回 x反正切弧度值 math.atan(0) → 0.0math.atan(1) → 0.7853981633974483 (π/4 弧度,即45度)
math.atan2(y, x) 返回给定坐标 (x, y) 对应的反正切弧度值。它能确定角度所在的象限,比 atan(y/x) 更精确。 math.atan2(1, 1) → 0.7853981633974483 (π/4 弧度), math.atan2(1, 0) → 1.5707963267948966 (π/2 弧度)
math.cos(x) 返回 x (弧度) 的余弦值。结果范围是 [-1, 1]。 math.cos(0) → 1.0math.cos(math.pi) → -1.0 (π 弧度是180度)
math.hypot(x, y) 返回欧几里德范数,即点 (x, y) 到原点 (0,0)直线距离,也就是 sqrt(x² + y²) math.hypot(3, 4) → 5.0 (3-4-5直角三角形)
math.sin(x) 返回 x (弧度) 的正弦值。结果范围是 [-1, 1]。 math.sin(0) → 0.0math.sin(math.pi/2) → 1.0 (π/2 弧度是90度)
math.tan(x) 返回 x (弧度) 的正切值 math.tan(0) → 0.0math.tan(math.pi/4) → 0.9999999999999999 (约等于1,π/4弧度是45度)
math.degrees(x) 弧度值 x 转换为角度值 math.degrees(math.pi/2) → 90.0 (π/2 弧度是90度), math.degrees(math.pi) → 180.0
math.radians(x) 角度值 x 转换为弧度值。 (180度 = π 弧度) math.radians(90) → 1.5707963267948966 (π/2 弧度), math.radians(360) → 6.283185307179586 (2π 弧度)

角度与弧度转换示例:

1
2
3
4
5
6
7
8
import math

angle_deg = 45 # 45度
angle_rad = math.radians(angle_deg) # 转换为弧度
print(f"{angle_deg}度 = {angle_rad}弧度") # 输出: 45度 = 0.7853981633974483弧度

sin_value = math.sin(angle_rad) # 计算正弦值
print(f"{angle_deg}度的正弦值是: {sin_value}") # 输出: 45度的正弦值是: 0.7071067811865476 (约等于√2/2)

三、Python 数学常量

这些是数学中常用的重要常数,同样需要 import math 才能使用。

常量名 描述 示例 (假设已 import math)
math.pi 圆周率 π (Pi),约等于 3.141592653589793。 print(math.pi) → 3.141592653589793
math.e 自然常数 e,约等于 2.718281828459045。 print(math.e) → 2.718281828459045

示例:

1
2
3
4
5
import math

print("圆周率 π 的值是:", math.pi)
print("计算半径为 5 的圆的面积:", math.pi * math.pow(5, 2)) # πr²
print("自然常数 e 的值是:", math.e)

练习

基础练习

练习 1:温度转换
编写一个程序,将用户输入的摄氏度温度转换为华氏度,或者将华氏度转换为摄氏度。

  • 转换公式:
    • 华氏度 = 摄氏度 × 9/5 + 32
    • 摄氏度 = (华氏度 - 32) × 5/9
  • 要求:
    1. 首先让用户选择转换方向(1: 摄氏度转华氏度, 2: 华氏度转摄氏度)。
    2. 然后输入相应的温度值。
    3. 输出转换后的温度,保留一位小数。
    4. 使用 input() 函数获取用户输入,并进行适当的类型转换。
参考答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print("温度转换工具")
print("1: 摄氏度转华氏度")
print("2: 华氏度转摄氏度")

choice = input("请选择转换方向 (1/2): ")
temperature = float(input("请输入温度值: "))

if choice == '1':
fahrenheit = temperature * 9/5 + 32
print(f"{temperature} 摄氏度 = {fahrenheit:.1f} 华氏度")
elif choice == '2':
celsius = (temperature - 32) * 5/9
print(f"{temperature} 华氏度 = {celsius:.1f} 摄氏度")
else:
print("无效的选择")

练习 2:判断奇偶数
编写一个程序,让用户输入一个整数,然后判断它是奇数还是偶数,并输出结果。

参考答案
1
2
3
4
5
num = int(input("请输入一个整数: "))
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")

练习 3:最大公约数 (GCD)
编写一个程序,让用户输入两个正整数,计算并输出它们的最大公约数。

  • 提示:可以使用 math 模块的 gcd 函数,或者自己实现辗转相除法。
参考答案 (使用 math.gcd)
1
2
3
4
5
6
7
import math

num1 = int(input("请输入第一个正整数: "))
num2 = int(input("请输入第二个正整数: "))

gcd = math.gcd(num1, num2)
print(f"{num1}{num2} 的最大公约数是: {gcd}")
参考答案 (辗转相除法 - 不使用 math)
1
2
3
4
5
6
7
8
9
10
11
num1 = int(input("请输入第一个正整数: "))
num2 = int(input("请输入第二个正整数: "))

a, b = num1, num2
# 辗转相除法: 用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。
while b != 0:
temp = a % b
a = b
b = temp
gcd = a
print(f"{num1}{num2} 的最大公约数是: {gcd}")

综合练习

练习 4:简易计算器
编写一个简单的计算器程序,支持加、减、乘、除四种运算。

  • 要求:
    1. 用户输入第一个数字。
    2. 用户选择运算符号 (+, -, *, /)。
    3. 用户输入第二个数字。
    4. 程序计算结果并输出。
    5. 考虑除法运算中除数不能为零的情况,并给出提示。
    6. 结果保留两位小数。
参考答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
print("简易计算器 (支持 +, -, *, /)")

# 获取用户输入
num1 = float(input("请输入第一个数字: "))
operator = input("请输入运算符号 (+, -, *, /): ")
num2 = float(input("请输入第二个数字: "))

# 根据运算符进行计算
result = None
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
if num2 == 0:
print("错误:除数不能为零!")
else:
result = num1 / num2
else:
print("错误:不支持的运算符号!")

# 输出结果
if result is not None:
print(f"{num1} {operator} {num2} = {result:.2f}")

练习 5:猜数字游戏
编写一个猜数字游戏。

  • 规则:
    1. 程序随机生成一个 1 到 100 之间的整数作为答案。
    2. 用户有最多 7 次猜数字的机会。
    3. 每次猜完后,程序会提示“太大了”、“太小了”或“恭喜你猜对了!”。
    4. 如果猜对了或用完了次数,游戏结束。
  • 提示:使用 random 模块的 randint(a, b) 函数生成随机数。
参考答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import random

# 生成1到100之间的随机数
secret_number = random.randint(1, 100)
max_attempts = 7
attempts = 0

print("欢迎来到猜数字游戏!")
print(f"我想了一个1到100之间的数字,你有 {max_attempts} 次机会猜出它。")

while attempts < max_attempts:
# 计算剩余次数
remaining = max_attempts - attempts
guess = input(f"请输入你猜的数字 (还剩 {remaining} 次): ")

# 检查输入是否为有效整数
if not guess.isdigit():
print("请输入一个有效的整数!")
continue

guess = int(guess)
attempts += 1

if guess < secret_number:
print("太小了!")
elif guess > secret_number:
print("太大了!")
else:
print(f"恭喜你!你用了 {attempts} 次就猜对了!答案就是 {secret_number}。")
break # 猜对了,跳出循环

# 如果用完了所有机会仍未猜对
if attempts == max_attempts and guess != secret_number:
print(f"很遗憾,你的机会用完了。正确答案是 {secret_number}。")

练习 6:成绩等级评定
编写一个程序,根据学生的分数(0-100)评定等级。

  • 等级划分标准:
    • 90-100: A
    • 80-89: B
    • 70-79: C
    • 60-69: D
    • 0-59: F
    • 分数不在 0-100 范围内:输入无效
  • 要求:使用嵌套的 if-elif-else 语句或链式 if-elif-else 语句。
参考答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
score = float(input("请输入学生的分数 (0-100): "))

if score < 0 or score > 100:
print("输入无效!分数必须在 0 到 100 之间。")
else:
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'F'
print(f"该学生的等级是: {grade}")

希望这些练习能帮助你更好地理解和运用 Python 的数字类型和条件语句!尝试独立完成,遇到困难再查看参考答案。编程是练出来的,多动手