Python⼊门之模块
第1关:模块的定义
任务描述
在 Python 程序的开发过程中,为了代码维护的⽅便,我们可以把函数进⾏分组,分别放到不同的.py⽂件⾥。这样,每个⽂件包含的代码就相对较少,这个.py⽂件就称之为⼀个模块(Module)。本关的⽬标是让学习者了解并掌握 Python 模块定义的相关知识。
相关知识
模块能够让我们有逻辑地组织 Python 代码段,模块中能够定义函数、类和变量,模块⾥也可以包含可执⾏的代码。
模块的引⼊
Python 中要⽤关键字import来引⼊某个模块。⽐如要引⽤模块math,就要在⽂件的开头⽤import math来引⼊。在调⽤math模块中的函数时,引⽤格式为:
模块名.函数名
因为这种调⽤⽅式可以避免特殊情况的发⽣。⽐如在多个模块中可能含有相同名称的函数,这时如果只是通过函数名来调⽤,程序⽆法知道是要调⽤哪个函数。所以如果⽤上述⽅法引⼊模块的时候,调⽤函数必须加上模块名。例如:
import math
print(fabs(-2))
输出结果:
NameError: name ‘fabs’ is not defined
fabs()必须加上math前缀,例如:
import math
print(math.fabs(-2))
输出结果:
2
有些时候我们只需要⽤到模块中的某个函数,这时不需要导⼊整个模块,只需要导⼊该函数即可。语句格式如下:
from 模块名 import 函数名1,函数名2…
通过这种⽅式导⼊函数的时候,调⽤函数时就只能给出函数名,⽽不能给出模块名。这种导⼊函数的⽅式会有⼀种缺陷,就是当两个模块中含有相同名称函数的时候,后⾯⼀次导⼊的函数会覆盖前⼀次导⼊的函数。
例如,假如模块A中有函数function(),模块B中也有函数function()。如果先导⼊模块A中的function(),后导⼊模块B中的function(),那么当我们在后⾯调⽤function()函数的时候,程序会去执⾏模块B中的function()函数。
如果想⼀次性引⼊模块math中所有的函数,可以通过如下⽅式导⼊:
from math import *
⾃⼰定义模块
每个 Python ⽂件都可以看作⼀个模块,模块的名字就是 Python ⽂件的名字。所以我们完全可以⾃⼰
写⼀个 Python ⽂件,作为⾃⼰定义的模块。例如,我们编写了my_module.py⽂件,⾥⾯定义了plus()函数:
# my_module.py
def plus(a,b):
return a+b
之后我们就可以在其他 Python ⽂件中先引⼊my_module,然后通过my_module.plus(a,b)来调⽤my_module.py⽂件中的plus()函数。我们也可以直接通过from my_module import plus来导⼊plus()函数。
⼩结
使⽤模块可以⼤⼤提⾼代码的可维护性,⽽且也增加了代码的利⽤率。当⼀个模块编写完毕之后,在其他 Python ⽂件中导⼊该模块,模块中的函数就可以被其他 Python ⽂件使⽤了。
编程要求
本关的编程任务是补全src/step1/module.py⽂件的代码,实现相应的功能。具体要求如下:
输⼊直⾓三⾓形的两个直⾓边的边长a和b,要求计算出其斜边边长;
要求使⽤math模块,并输出计算结果,结果保留⼩数点后三位⼩数。
本关涉及的代码⽂件src/step1/module.py的代码框架如下:
import math
# 输⼊正整数a和b
a = int(input())
b = int(input())
# 请在此添加代码,输⼊直⾓三⾓形的两个直⾓边的边长a和b,计算出其斜边边长
>> Begin >>
>> End >>
测试说明
本关的测试⽂件是src/step1/module.py,测试过程如下:
平台⾃动编译⽣成;
平台运⾏,并以标准输⼊⽅式提供测试输⼊;
平台获取输出,并将其输出与预期输出对⽐。如果⼀致则测试通过,否则测试失败。以下是平台对src/step1/module.py的样例测试集:
测试输⼊:
3
4
预期输出:
5.000
测试输⼊:
1.5
3.9
python新手快速入门预期输出:
4.179
测试输⼊:
9
12
预期输出:
15.000
测试输⼊:
3.71
4.26
预期输出:
5.649
开始你的任务吧,祝你成功!
如果你觉得这⼀关的内容对你有帮助,请你在下⾯点赞。
参考代码:
# coding=utf-8
import math
from decimal import Decimal
# 输⼊正整数a和b
a = float(input())
b = float(input())
# 请在此添加代码,输⼊直⾓三⾓形的两个直⾓边的边长a和b,计算出其斜边边长
#********** Begin *********#
target = Decimal(math.sqrt(a**2+b**2)).quantize(Decimal("0.000"))
print(target)
>> End >>
第2关:内置模块中的内置函数
任务描述
我们在安装好了 Python 配置⽂件后,也将 Python 本⾝带有的库也安装好了, Python ⾃带的库也叫做 Python 的内置模块。Python
的内置模块
是 Python 编程的重要组织形式,内置模块中的内置函数也极⼤⽅便了编程过程中对函数等功能的使⽤。本关的⽬标是让学习者了解并掌握Python 内置模块和内置函数的相关知识。
相关知识
内置模块
Python 中常见的内置模块如下:
os模块:⽂件和⽬录,⽤于提供系统级别的操作;
sys模块:⽤于提供对解释器相关的操作;
json模块:处理JSON字符串;
logging: ⽤于便捷记录⽇志且线程安全的模块;
time&datetime模块:时间相关的操作,时间有三种表⽰⽅式;
hashlib模块:⽤于加密相关操作,代替了md5模块,主要是提供SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法;random模块:提供随机数。
内置模块中的内置函数
Python 的内置模块中也有很多使⽤⼗分⽅便的内置函数。
dir()函数
dir()函数是⼀个排好序的字符串列表,其内容是⼀个模块⾥定义过的名字,包含在⼀个模块⾥定义的所有模块、变量和函数。例如:
# 导⼊内置math模块
import math
# 调⽤math模块中的dir()函数
content = dir(math)
# 输出math模块中所有模块、函数和变量的名字
print(content)
输出结果:
[‘doc’, ‘loader’, ‘name’, ‘package’, ‘spec’, ‘acos’, ‘acosh’, ‘asin’, ‘asinh’, ‘atan’, ‘atan2’,
‘atanh’, ‘ceil’, ‘copysign’, ‘cos’, ‘cosh’, ‘degrees’, ‘e’, ‘erf’, ‘erfc’, ‘exp’, ‘expm1’,
‘fabs’,‘factorial’, ‘floor’, ‘fmod’, ‘frexp’, ‘fsum’, ‘gamma’, ‘gcd’, ‘hypot’, ‘inf’, ‘isclose’,
‘isfinite’, ‘isinf’, ‘isnan’, ‘ldexp’, ‘lgamma’, ‘log’, ‘log10’, ‘log1p’, ‘log2’, ‘modf’, ‘nan’, ‘pi’,
‘pow’, ‘radians’, ‘sin’,‘sinh’, ‘sqrt’, ‘tan’, ‘tanh’, ‘tau’, ‘trunc’]
程序输出了math模块中所有模块、函数和变量的名字。特殊字符串变量__name__是指向模块的名字,变量__file__是指向该模块的导⼊⽂件名。
globals()和locals()函数
globals()和locals()函数可被⽤来返回全局和局部命名空间⾥的名字。如果在函数内部调⽤的是globals()函数,那么返回的是所有在该函数⾥能够访问的全局名字。如果在函数内部调⽤的locals()函数,返回的是能够在该函数⾥访问的局部命名。globals()函数和locals()函数的返回类型都是字典,所以名字们能⽤keys()函数摘取。
reload()函数
当⼀个模块被导⼊到⼀个脚本中后,程序只会将模块顶层部分的代码执⾏⼀次。因此,如果我们想再次执⾏模块顶层部分的代码,可以⽤reload()函数。该函数便会重新将之前导⼊过的模块导⼊。格式如下:
reload(module_name)
在这⾥,module_name要直接放模块名,⽽不能是⼀个字符串形式。例如,我们想重载hello模块:
reload(hello)
⼩结
Python 中的内置模块和内置函数可以帮助程序员快速完成编程功能,使他们不必重复开发已存在的常⽤代码,因此极⼤的提⾼了办事效率和代码质量。Python 中的内置模块和内置函数的应⽤也⼗分⼴泛,希望学习者在接下来的学习⽣活中有更加深刻的体会。
编程要求
本关的编程任务是补全src/step2/built-module.py⽂件的代码,实现相应的功能。具体要求如下:
输⼊两个正整数a和b,要求判断是否存在两个整数,它们的和为a,积为b;
如果存在,则输出Yes,若不存在,则输出No。
本关涉及的代码⽂件src/step2/built-module.py的代码框架如下:
# coding=utf-8
# 导⼊math模块
import math
# 输⼊两个整数a和b
a = int(input())
b = int(input())
# 请在此添加代码,要求判断是否存在两个整数,它们的和为a,积为b
>> Begin >>
>> End >>
测试说明
本关的测试⽂件是src/step2/built-module.py,测试过程如下:
平台⾃动编译⽣成;
平台运⾏,并以标准输⼊⽅式提供测试输⼊;
平台获取输出,并将其输出与预期输出对⽐。如果⼀致则测试通过,否则测试失败。以下是平台对src/step2/built-module.py的样例测试集:
测试输⼊:
9
15
预期输出:
No
测试输⼊:
9
20
预期输出:
Yes
测试输⼊:
20
36
预期输出:
Yes
测试输⼊:
18
40
预期输出:
No
开始你的任务吧,祝你成功!
如果你觉得这⼀关的内容对你有帮助,请你在下⾯点赞。
参考代码:
# coding=utf-8
# 导⼊math模块
import math
# 输⼊两个整数a和b
a = int(input())
b = int(input())
# 请在此添加代码,要求判断是否存在两个整数,它们的和为a,积为b
>> Begin >>
count=0
for x in range(a):
for y in range(a):
if x + y == a and x * y == b:
count+=1
if count == 0:
print('No')
else:
print('Yes')
>> End >>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论