要学习的知识点
- 输入与类型转换:
input()读入文本,float()、int()分别转换成浮点数和整数。 - 导入模块:
import math导入 Python 自带的数学模块,不需要安装。 - 数学函数:绝对值、向下取整、向上取整、平方根。
- 输出:使用
print()将说明文字和计算结果显示出来。
取整方向按数轴理解:-3.7 向下是 -4,向上是 -3;它不是简单删除小数部分。
题目
输入两行数据:第一行是实数 x,第二行是非负整数 n。依次输出 x 的绝对值、向下取整值、向上取整值,以及 n 的平方根。
输入示例:
-3.7
9对应程序:ex01.py。
完整代码
下面直接展示 ex01.py 的全部内容。颜色区分关键字、模块、函数、字符串和注释。
"""练习 1:输入实数 x 和非负整数 n,输出 |x|、floor(x)、ceil(x) 和 sqrt(n)。
输入:第一行 x,第二行 n。
学习说明:
- import math 载入 Python 数学工具;math.floor 向负无穷取整,ceil 向正无穷取整。
- input() 读入的是字符串,所以先保存文本,再用 float() 和 int() 转成数值。
- abs(x) 求绝对值;sqrt(n) 求平方根。注意平方根输入不能是负数。
- print() 将标签和结果一起显示,便于区分四个计算结果。
"""
import math
x_text = input()
x = float(x_text)
n_text = input()
n = int(n_text)
absolute_value = abs(x)
floor_value = math.floor(x)
ceil_value = math.ceil(x)
square_root = math.sqrt(n)
print("abs:", absolute_value)
print("floor:", floor_value)
print("ceil:", ceil_value)
print("sqrt:", square_root)
进阶写法
这版与初学版解决同一道题,写法更精炼。先读代码,再看下面的简要说明。
进阶源码文件:ex01_adv.py
"""练习 1 进阶版:使用较精炼的输入转换和函数调用。"""
import math
x = float(input())
n = int(input())
print("abs:", abs(x))
print("floor:", math.floor(x))
print("ceil:", math.ceil(x))
print("sqrt:", math.sqrt(n))
float(input()) 可以直接把输入文本转换为小数,省去单独保存文本的变量;math 函数结果直接放进 print(),适合熟悉函数嵌套后阅读。
运行结果
示例输入:
-3.7
9程序输出:
abs: 3.7
floor: -4
ceil: -3
sqrt: 3.0逐个认识函数
下面只列出本程序实际用到的写法;先看参数如何传入,再看返回值怎样保存或输出。
| 函数/写法 | 功能与返回值 | 注意事项 |
|---|---|---|
input() | 读取一行并返回字符串。 | 返回文本,要计算时先转换成数值。 |
float(text) | 把数字文本转换为浮点数。 | 无效文本会产生 ValueError。 |
int(text) | 把整数文本转换为整数。 | 像 9.0 这样的文本不能直接用 int 转换。 |
abs(x) | 返回 x 的绝对值。 | 内置函数,不会修改 x。 |
math.floor(x) | 返回不大于 x 的最大整数。 | 向负无穷取整,例如 -3.7 得 -4。 |
math.ceil(x) | 返回不小于 x 的最小整数。 | 向正无穷取整,例如 -3.7 得 -3。 |
math.sqrt(n) | 返回 n 的平方根,结果为浮点数。 | n 不能为负数。 |
print(...) | 把对象输出到终端;返回 None。 | 可以同时输出标签和结果。 |
代码如何运行
- 运行到
input()时,程序等待输入第一行;float()将文本转换成浮点数并保存到 x。 - 第二次调用
input()读取 n;int()将文本转换为整数。 - 程序从上到下执行四个 print。每个 print 先算出函数结果,再将标签和结果输出。
math.floor(x)、math.ceil(x)、math.sqrt(n)通过math.调用数学模块中的函数。
平方根要求 n 非负;若输入负数,math.sqrt 会产生 ValueError。题目已经限定 n 为非负整数。
自己动手试一试
import math
x = float(input("请输入 x:"))
n = int(input("请输入非负整数 n:"))
print(abs(x))
print(math.floor(x), math.ceil(x))
print(math.sqrt(n))给这段代码添加输入提示。试试 x 为 4.2、-4.2,观察取整方向;再试 n=0。