目录

  • 1 前言
    • 1.1  Python解释器安装
    • 1.2  PyCharm开发环境
  • 2 Python程序设计实验
    • 2.1  实验1 基本输入输出
    • 2.2  实验2 基本运算
    • 2.3  实验3 字符串处理
    • 2.4  实验4 列表与元组应用
    • 2.5  实验5 列表与元组应用
    • 2.6  实验6 字典与集合应用
    • 2.7  实验7 函数应用1
    • 2.8  实验8 函数应用2
    • 2.9  实验9 类的创建与应用
    • 2.10  实验10 模块应用
    • 2.11  实验11 文件操作
    • 2.12  实验12 异常处理
    • 2.13  实验13 使用正则表达式
    • 2.14  实验14 tkinter基础应用
  • 3 学习参考
    • 3.1  1 Python及其IDLE环境
    • 3.2  2 Python代码规范
    • 3.3  3 使用变量
    • 3.4  4 输入输出
    • 3.5  5 运算符
    • 3.6  6 字符串
    • 3.7  7 条件语句
    • 3.8  8 循环语句
    • 3.9  9 列表
    • 3.10  10 元组
    • 3.11  11 字典
    • 3.12  12 集合
    • 3.13  13 自定义函数
    • 3.14  14 内置函数
    • 3.15  15 类的创建和使用
    • 3.16  16 类的继承与多态
    • 3.17  17 time模块
    • 3.18  18 os模块
    • 3.19  19 random模块
    • 3.20  20 文件
    • 3.21  21 错误与异常处理
 实验10 模块应用

    模块就是一个保存了Python代码的文件。通过在当前文件中导入其它模块,就可以引用它的任何公共的函数、类或属性。

任务1:根据日期显示星期

    编写程序s10A.py。要求:

1、输入日期,输出该日期的星期。

2、程序运行效果:

输入日期(y-m-d):2022-2-26

输出:2022年2月26日是星期六

"""

(1)模块的导入方式

① 使用import

    import 模块1, 模块2, …

例如:

import math    #导入math模块

n=int(input("输入n:"))

print(f"sqrt函数:{math.sqrt(n):.3f}")

print(f"算术运算符:{n**0.5:.3f}")

    使用被导入模块中定义的函数或类时,必须包含模块的名字,如math.sqrt(n)。

② 使用from…import…

    from 模块名 import 函数名1,函数名2,…

例如:

from  time import localtime,strftime  #导入time模块中localtime和strftime函数

print("当前系统时间为:")

print(strftime("%Y-%m-%d %H:%M:%S",localtime( )))

    导入模块之后,无需添加前缀,可以像使用当前程序中的内容一样使用模块中的内容。如strftime( )和localtime( )函数,无需添加time模块名。

注意:

① 如果模块包含的属性和方法,可能与其他模块的属性和方法同名,选方法①

② 如果要经常访问导入模块的属性和方法,不想重复输入模块名,选方法②

③ 如果选择地导入某些属性和方法,而不想要其它属性和方法,选方法②

④ 尽量少用 from 模块名 import * ,因为无法清晰地表示导入了哪些对象。

"""(2)time模块(教材P97表8-4)

    在Python中,通常有两种方式来表示时间:

方法一,时间戳方式:时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。例如:

import time     #导入time模块

print(time.time( ))     #获取当前时间,结果为实数,单位为秒

输出:

    165037**18.8489325 

方法二,时间元组struct_time方式:

import time

print(time.localtime( ))    #以struct_time类型输出当前时间

输出:

    time.struct_time(tm_year=2022, tm_mon=**, tm_mday=19, tm_hour=21, tm_min=50, tm_sec=33, tm_wday=1, tm_yday=109, tm_isdst=0)

struct_time元组共有9个元素,对应索引和属性如下:

索引    属性

 0    tm_year(年)

 1    tm_mon(月)

 2    tm_mday(日)

 3    tm_hour(时)

 4    tm_min(分)

 5    tm_sec(秒)

 6    tm_wday(weekday,0-6,星期中的第几天

 7    tm_yday(一年中的第几天)

 8    tm_isdst(是否是夏令时)

① strftime( )函数(时间戳转换为指定格式日期,教材P97表8-4

from  time import localtime,strftime

print("当前系统时间为:")

print(strftime("%Y-%m-%d %H:%M:%S",localtime( )))

输出:

    当前系统时间为:

    2022-0*-19 22:21:47

这里,%Y表示4位年份,%y表示2位年份,%m表示月份,%H表示小时。

② strptime( )函数(字符串转换为时间元组,教材P97表8-4

from time import strptime    #导入time模块中strptime函数

week="一二三四五六日"

s=input("输入日期(y-m-d):")

md=strptime(s,"%Y-%m-%d")

print(f"{s},星期{week[md[6]]}")

输入:2022-5-1

输出:2022-5-1,星期日

这里,s是字符串,md是时间元组。其中md[0]=2022,md[1]=5,...md[6]=6(星期中第7天)。

"""(3)datetime模块

    datatime模块重新封装了time模块,提供更多接口,提供的类有date,time,datetime,...

    其中date类的方法和属性主要有:

md = date(2022,05,01)    #创建date实例

md.year、md.month、md.day:年、月、日

md.weekday( ):返回weekday,0-6

md.isoweekday( ):返回weekday,1-7

md.strftime(fmt):和time模块format相同

md.today( ):返回本地日期的date类型对象

例如:

from datetime import date    #导入datetime模块中date类

s=(2022,5,1)

md=date(*s)   #创建date实例

print(f"{md.year}年{md.month}月{md.day}日,星期中第{md.weekday( )+1}天")

输出:

    2022年5月1日,星期中第7天

这里,创建实例语句md=date(*s),*s是前面章节函数中,不定长参数的实参,形参接受后再解包。参数s可以是元组,也可以是列表,还可以是字典(s={"year":2022,"month":5,"day":1},md=date(**s)  ),但不能是字符串。

"""提示:

建议采用time模块中的strptime( )函数(教材P97表8-4),可以直接将input( )接收的字符串,转换为时间元组。采用datetime模块中的date类方法,必须先将input( )接收的字符串,转换为列表或元组。


任务2:使用Windows的默认程序打开文件

    编写程序s10B.py。要求:

1、输入一个文件名(含路径)

2、如果文件不存在,显示"ERROR"

3、如果文件存在,使用Windows的默认程序打开文件。

(1)能够打开文件时,显示"CanShow"

(2)不能够打开文件时,显示"NoShow"

4、程序执行效果:

输入文件名:d:\a.docx

输出:CanShow

"""

os模块(教材P95)

    os模块中提供了访问操作系统服务的功能。

① os.getcwd( )函数:获取当前工作路径。

import os

print(f"当前工作路径:{os.getcwd( )}")

输出:

    当前工作路径:F:\Python****

② os.listdir( )函数:返回文件夹中文件和文件夹名字列表。

import os

for x in os.listdir(os.getcwd( )):

    print(x)

输出:

.idea

......

hello.py

s10A.py

③ os.path.isfile( )函数:判断某一路径是否为文件。

   os.path.isdir( )函数:判断某一路径是否为目录。

import os

s="c:\20218888\s10A.py"

if os.path.isfile(s):

    print("Ok")

else:

    print("ERROR")

注意,os.path.isdir( )和os.path.isfile( )需要传入的参数是绝对路径。

④ os.system( )函数:将字符串转化成命令在服务器上运行。

import os

n=os.system("notepad.exe")    #运行操作系统的记事本程序

print(f"返回值:{n}")

输出:

    返回值:0

system( )函数返回值如果为0,则表示命令执行成功,其它值则表示错误。例如:

import os

s="c:\20218888\s10A.py"

if os.path.isfile(s):      #文件是否存在

    if(os.system(s))==0:    #文件能否用Windows的默认程序打开

        print("文件存在,成功打开!")

    else:

        print("文件存在,打开失败!")

else:

    print("文件不存在!")


任务3:随机生成整数序列

    编写程序s10C.py。要求:

1、随机产生[1,33]上的6个互异的整数

2、按递增顺序输出这些整数

3、程序运行效果:

产生的随机序列为:7,10,15,16,21,28

"""

(1)random模块(教材P97)

    random模块为随机数模块,该模块中定义了多个可产生各种随机数的函数。

① random.random( )函数:返回[0,1)之间的随机实数。

import random

print(random.random( ))

② random.randint(x,y)函数:返回[x,y]之间的随机整数。

print(random.randint(1,33))

③ random.choice(seq)函数:从序列中返回一个随机元素。

print(random.choice(("Tuple", "List", "Dict")))

random.sample(seq, k)函数:从序列中随机抽取k个元素,并将k个元素以list形式返回。

例如:

from random import randint,sample

a=range(1,34)     #a为迭代对象,包括33个元素:1、2、3、.......33

b = [randint(1,33) for i in range(33)]  #b为列表,包括33个元素:元素值随机

x = sample(a, 6)      #从a中随机抽取6个元素

y = sample(b, 6)     #从b中随机抽取6个元素

print(f"range( )方法产生6个随机数:{x}")

print(f"randint( )方法产生6个随机数:{y}")

输出:

  range( )方法产生6个随机数:[27, 18, 31, 6, 15, 7]

  randint( )方法产生6个随机数:[30, 7, 9, 28, 7, 5]

可以看出,range(1,34)产生的33个数中,随机抽取6个数,每个数肯定都是唯一的。randint(1,33)产生的33个数中,随机抽取6个数,有可能重复!!

(2)如何将列表或元组中元素,转换为字符串输出??

    和前面input( )函数接受字符串,再将字符串转换为列表或元组,正好相反。

① 推导式转换

a=[27, 18, 31, 6, 15, 7]

a.sort( )

x=[str(i) for i in a]    #str( ),数值型转换为字符串

x=",".join(x)

print("产生的随机序列为:",x)

输出:

    产生的随机序列为: 6,7,15,18,27,31

② map函数

a=[27, 18, 31, 6, 15, 7]

a.sort( )

x=map(str,a)

x=",".join(x)

print("产生的随机序列为:",x)


任务4:简易计算器

    编写程序s10D。要求:

1、能够计算输入的表达式的值

2、输入的表达式中可包含以下函数:

(1)sin,cos,tan,asin,acos,atan

(2)exp,log,sqrt,round,int,float

3、表达式中可包含运算符:+, -, *, /, //, %, **

4、表达式中可使用常量pi、e

5、程序运行效果:

输入一个表达式:round(sin(pi/4)+sqrt(5),2)

输出:2.94

"""提示:

① 用“from math import *”,导入math模块的所有内容(教材P94)。因为从键盘输入表达式时,你不可能每个数学函数或常量pi前面,还加上模块名称。

② input( )函数接受的数据,都是字符串。eval( )函数的作用,就是除掉字符串两端的引号。只要你输入的是合法算术表达式,都会计算得出正确结果。除非你是一顿乱输的!!这里不要考虑错误和异常的处理。