根据注释将以下代码中的"<X>"替换为适当的内容:
<X> sys #导入sys模块
a=sys.argv
print(f"file={<X>}") #输出程序文件名
a=sys.float_info
#输出科学计数法浮点数指数的最大值:
print(f"max_exp={<X>}")
sys.<X>(0) #终止Python解释器运行
要求:
1、填写内容尽量精简。
2、程序保存到:s12t1.py
3、程序执行效果:
file=C:/20221234/s12t1.py
max_exp=1024
【参考与提示】
1、sys模块主要用于处理Python运行时环境的配置和与Python解释器进行交互。
2、sys.argv是一个列表,包含脚本名称和命令行参数。
3、sys.float_info是一个包含浮点数相关信息的对象,可通过属性获取相关数据。
4、sys.exit可终止Python解释器的运行。可接受一个整数作为退出状态码。通常0表示正常退出。
import sys # 导入sys模块
# 通过sys.argv获取命令行参数列表
# sys.argv是一个列表,其中第一个元素(索引为0)是当前执行的Python脚本文件名
# 后续元素(如果有)是在命令行中传递给脚本的参数
a = sys.argv
print(f"file={a[0]}") # 打印当前执行的Python脚本文件名
# 获取Python解释器中浮点数的信息对象
# sys.float_info包含了浮点数实现的各种特性和限制信息
a = sys.float_info
# 打印浮点数在科学计数法表示时指数部分的最大可能值
# 即表示为x = m * (2**e)形式时,e的最大可能整数值
print(f"max_exp={a.max_exp}")
# 终止当前Python解释器的运行,并返回退出状态码0
sys.exit(0) # 0通常表示程序正常退出,非零值表示程序异常退出
任务2 os模块应用
根据注释将以下代码中的"<X>"替换为适当的内容:
import os
#得到操作系统信息:
a=os.<X>["OS"]
print("OS=",a)
#搜索c盘根目录下的全部文件和文件夹:
a=os.<X>("c:\\")
a=[f for f in a if f.endswith(".txt")]
if a:
b=os.stat(f"c:\\{a[0]}")
#输出文件最后修改时间:
print("mtime=",<X>)
#文件夹是否存在
if <X>("c:\\sy12"):
#创建文件夹:
os.<X>("rd c:\\sy12\\nwqd")
要求:
1、填写内容尽量精简。
2、程序保存到:s12t2.py
3、程序执行效果:
OS=Windows_NT
mtime=1725948811.0860503
【参考与提示】
1、os模块主要用于访问操作系统服务,实现对文件和文件夹的管理。
2、在python交互式解释器中导入os模块后,可以通过"dir(os)"查看os模块的成员。或通过类似"help(os.path)"的语句了解os成员的使用方法。
import os
# 从环境变量中获取操作系统名称
# os.environ[ ]是一个包含系统环境变量的字典,"OS"是表示操作系统名称的环境变量键
# os.getenv( )是一个函数,用于获取指定环境变量的值
a = os.environ["OS"]
print("OS=", a)
# os.listdir( )函数用于获取指定路径下的文件和文件夹列表
a = os.listdir("c:\\")
# 筛选出a列表中以.txt结尾的文件名,使用列表推导式
a = [f for f in a if f.endswith(".txt")] # f.endswith(".txt")判断文件名是否以.txt结尾
if a: # 如果a列表不为空,即找到了txt文件
# 获取c盘下找到的第一个txt文件的状态信息
# os.stat( )函数用于获取文件或文件夹的状态信息,包括文件大小、修改时间等
b = os.stat(f"c:\\{a[0]}")
# st_mtime属性表示文件的最后修改时间(时间戳形式)
print("mtime=", b.st_mtime)
# os.path.isdir( )函数用于判断指定路径是否为一个存在的目录
if os.path.isdir("c:\\sy12"):
# 使用系统命令尝试删除c盘下sy12文件夹内的nwqd文件夹
# os.system( )函数用于执行系统命令,这里使用"rd"命令(Windows系统下删除目录命令)
os.system("rd c:\\sy12\\nwqd")
任务3 math模块应用
要求:
1、程序运行时输入一个包含数值的字符串,数据分隔符为",",将全部数值求和后输出一个不小于该和值的最小整数。无效数据作零处理。
2、必须使用math模块中的相关函数。
3、程序保存到:s12t3.py
4、程序执行效果:
输入字符串:-9.3,2.3,1.6,abc
value=-5
【参考与提示】
1、利用字符串的内置函数split可切分数据。
2、利用try语句可捕获无效数据的计算。
3、可通过import语句导入math模块中的指定成员。
import math
s = input("输入字符串:")
nums = s.split(',')
total = 0 #初始化累加器
for num in nums:
try:
num = float(num) # 尝试将子字符串转换为浮点数
total = total + num # 如果转换成功,将该数值累加到总和中
except ValueError:
total = total + 0 # 如果转换失败,添加0
# 使用math.ceil函数对总和进行向上取整,即返回大于或等于该数值的最小整数。
# 与math.ceil函数对应的函数是math.floor,对向下取整
result = math.ceil(total)
print(f"value={result}")
任务4 random模块应用
要求:
1、输入一个[30,60]上的正整数m,输出6个[1,m]上的随机整数(递增排序,不能重复)。输入无效数据时输出"ERROR"。
2、random模块中:需使用shuffle函数,其他函数不能使用。
3、程序保存到:s12t4.py
4、程序执行效果:
输入一个[30,60]上的正整数:56
values=5,9,15,20,21,56
【参考与提示】
求解思路(假定输入的正整数为m):
1、由range函数产生[1,m]上的整数列表a。
2、由random模块中的shuffle函数对a乱序。
3、取列表a的前6个元素得到列表b。
4、对b排序后转换为字符串,删除其空格(利用字符串的内置函数replace)后切片输出。
import random
try:
m = int(input("输入一个[30,60]上的正整数:"))
assert 30 <= m <= 60, "整数范围必须是[30,60]"
except:
print("ERROR")
else:
a = list(range(1, m + 1)) # 生成从1到m的整数列表
random.shuffle(a) # 随机打乱列表a的顺序
b = a[:6]
b.sort( )
result = str(b).replace(" ", "")[1:-1]
print(f"values={result}")
任务5 time模块应用
要求:
1、输入2个日期(y,m,d;y,m,d),输出这2个日期相差的天数。数据无效输出"ERROR"。
2、只能使用time模块,不能使用其他模块。
3、程序保存到:s12t5.py
4、程序执行效果:
输入2个日期:2020,2,1;2024,10,2
days=1705
【参考与提示】
求解思路:
1、由try语句处理无效数据。
2、利用字符串的内置函数split得到2个日期字符串。
3、将日期字符串转换为元组(9个元素)。
4、利用time模块的mktime方法得到日期的时间戳。
5、两个日期的时间戳相减,得到相差的秒数后再转换为天数输出。
import time
try:
s = input("输入2个日期:")
d1, d2 = s.split(';')
year1, month1, day1 = eval(d1)
year2, month2, day2 = eval(d2)
# 构建时间元组(包含年、月、日、时、分、秒等9个元素)
# 时间元组格式:(年, 月, 日, 时, 分, 秒, 周几, 年中第几天, 是否夏令时)
# 此处将时、分、秒等设置为0,表示仅关注日期部分
time_tuple1 = (year1, month1, day1, 0, 0, 0, 0, 0, 0)
time_tuple2 = (year2, month2, day2, 0, 0, 0, 0, 0, 0)
# 将时间元组转换为时间戳(从1970年1月1日开始的秒数)
# time.mktime( )函数处理本地时间
timestamp1 = time.mktime(time_tuple1)
timestamp2 = time.mktime(time_tuple2)
# 计算两个时间戳的差值(秒数),取绝对值后转换为天数
# 一天有24小时,每小时3600秒(24*60*60=86400)
days = int(abs(timestamp2 - timestamp1) / (24 * 60 * 60))
print(f"days={days}")
except:
print("ERROR")
任务5 datetime模块应用
要求:
1、输入2个日期(y,m,d;y,m,d),输出这2个日期相差的天数,数据无效输出"ERROR"。
2、只能使用datetime模块,不能使用其他模块。
3、程序保存到:s12t5.py
4、程序执行效果:
输入2个日期:2020,2,1;2024,10,2
days=1705
【参考与提示】
求解思路:
1、由try语句处理无效数据。
2、利用字符串的内置函数split得到2个日期字符串。
3、将日期字符串转换为date对象。
4、计算2个日期的差,得到timedelta对象。
5、由timedelta对象的属性得到天数,输出这个天数的绝对值。
# 从datetime模块导入datetime类,用于处理日期和时间
from datetime import datetime
try:
s = input("输入2个日期:")
d = s.split(";")
# 使用datetime.strptime()方法将日期字符串解析为datetime对象
# "%Y,%m,%d" 指定了解析格式:年,月,日(例如:2023,10,15)
d1 = datetime.strptime(d[0], "%Y,%m,%d")
d2 = datetime.strptime(d[1], "%Y,%m,%d")
# 计算两个datetime对象的时间差,得到一个timedelta对象
delta = d2 - d1
# 输出时间差的天数绝对值(忽略方向,只关注天数差)
print(f"days={abs(delta.days)}")
except:
print("ERROR")

