Python实验报告五 python基础试题练习

文件

一、实验目的与要求

1、掌握文件的打开和关闭的方法。

2、掌握文本文件和二进制文件文件的不同操作,如读写、重命名、删除。

3、掌握os与os.path模块文件和文件夹的操作

二、题目

1 编写程序,创建文件data.txt,共100行,第n行存放[100*(n-1), 100*n)之间的素数。

2 批量生成50个人的随机信息,包括姓名,性别、年龄和成绩等。

1)把生成的信息写入csv文件info.csv。

2)读取info.csv文件,将每一个不及格(成绩小于60)的同学信息存放在以该同学姓名命名的文件中,这些文件使用dat作为扩展名。

3 编写程序,显示当前程序的工作路径,并展示"C:\Windows\System32"下所有的空文件夹。

异常

一、实验目的与要求

1、理解异常的概念,掌握Python中重要的内建异常类以及处理异常的几种方式。

2、掌握raise和assert语句,会抛出自定义的异常,掌握with和as环境安装器的使用。

二、题目

1 自己定义一个异常类,继承Exception类, 捕获下面的过程:判断input()输入的字符串长度是否小于5,如果小于5,比如输入长度为3则输出:"The input is of length 3, expecting at least 5“,大于5则输出"success”。 

2 编写程序,要求从键盘输入三个数字(整形或者浮点型),判断这三个数字是否能构成一个三角形。如果可以构成一个三角形,则计算三角形的周长。

1)自定义异常类IllegalArgumentException,对应异常信息为:“a,b,c不能构成三角形”

2)自定义异常类IllegalArgLenException,对应异常信息为:“参数个数不正确”

3)确保键盘输入的是三个值,如果输入值不为3,则抛出IllegalArgLenException异常。

4)确保输入是数字类型,否则抛出类型错误异常。

5)如果输入的三个数不能构成三角形则抛出IllegalArgumentException异常.如果可以构成则显示三角形三个边长,并计算并打印它的周长。

6)不管是否发生异常,程序都会在处理完毕后显示"程序运行结束"。

3 录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不及格的形式,最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理(小于0或者大于100)的情况,请编写程序。

文件

一:

# 编写程序,创建文件data.txt,共100行,第n行存放[100*(n-1), 100*n)之间的素数。
import math


def main1():
    f = open('a.txt', 'w', encoding="utf8")
    for n in range(1, 101):
        for i in range(100 * (n - 1) + 1, 100 * n + 1):
            flag = True
            for x in range(2, int(math.sqrt(i)) + 1):
                if i % x == 0:
                    flag = False
                    break
            if flag and i != 1:
                f.write("{} ".format(i))
        f.write("\n")
    print("文件创建成功")
    f.close()


main1()

Python实验报告五 python基础试题练习_第1张图片

二:

 

# 批量生成50个人的随机信息,包括姓名,性别、年龄和成绩等。
#
# 1)把生成的信息写入csv文件info.csv。
#
# 2)读取info.csv文件,将每一个不及格(成绩小于60)的同学信息存放在以该同学姓名命名的文件中,这些文件使用dat作为扩展名。
import pickle
import random
# 导入CSV模块
import csv


def main2():
    # 姓氏
    firs_name = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许',
                 '汪', '王', '张', '陈', '郭', '费', '萨']
    # 男孩名字
    second_name_boy = ['壮', '昱杰', '开虎', '凯信', '永斌', '方洲', '长发', '可人', '天弘', '炫锐', '富明', '俊枫',
                       '伟', '刚', '勇', '毅', '俊峰', '强军', '平保', '东文', '辉', '力明', '永健', '世广', '志义', '兴良', '宁', '福生', '龙',
                       '国胜', '学祥', '利', '彬富', '顺信', '杰', '星光', '天达', '彪', '心', '邦', '承乐']
    # 女孩名字
    second_name_girl = ['小玉', '蓝', '琬郡', '琛青', '予舴', '妙妙', '梓茵', '海蓉', '语娜', '馨琦', '晓馥', '佳翊', '秀',
                        '娟', '英', '华', '慧', '巧美', '娜', '静', '淑', '惠珠', '翠雅', '芝玉', '萍', '红娥', '玲', '芬芳', '燕',
                        '彩春', '菊兰', '凤洁', '梅琳', '素云', '莲', '环雪', '荣爱']

    all_gender = ['男', '女']
    f = open("file.csv", "w", encoding="utf8", newline='')

    csv_writer = csv.writer(f)

    csv_writer.writerow(["姓名", "性别", "年纪", '成绩'])

    for i in range(50):
        a_1 = firs_name[random.randint(0, len(firs_name) - 1)]
        a_2 = ''
        b = all_gender[random.randint(0, 1)]
        c = str(random.randint(1, 80))
        d = str(random.randint(1, 100))
        if b == '男':
            a_2 = second_name_boy[random.randint(0, len(second_name_boy) - 1)]
        else:
            a_2 = second_name_girl[random.randint(0, len(second_name_girl) - 1)]
        csv_writer.writerow([a_1 + a_2, b, c, d])
    print("-----------------------写入数据成功-----------------------")
    f.close()

    f2 = open("file.csv", "r", encoding="utf8")
    csv_read = csv.reader(f2)
    next(csv_read)
    for row in csv_read:
       if int(row[3]) < 60:
           f = open('a/' + row[0] + '.dat', "wb")
           pickle.dump(row, f)
           f.close()
    print("----------------------不及格学生信息文件创建完毕----- -------")


print("------------------实验二--------------------")
main2()

Python实验报告五 python基础试题练习_第2张图片

三:

# 编写程序,显示当前程序的工作路径,并展示"C:\Windows\System32"下所有的空文件夹。
# os模块是Python中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。
import os


def main3():
    for (dirname, sub_dirs, files) in os.walk(r'D:\Pycharm-community\pycharm\python-files'):
        for name in sub_dirs:
            if os.path.isdir(os.path.join(dirname, name)) and not os.listdir(os.path.join(dirname, name)):
                print(os.path.join(dirname, name))


print("------------------实验三--------------------")
main3()

Python实验报告五 python基础试题练习_第3张图片

 异常

一:

# 自己定义一个异常类,继承Exception类, 捕获下面的过程:判断input()输入的字符串长度是否小于5,
#
# 如果小于5,比如输入长度为3则输出:"The input is of length 3, expecting at least 5“,大于5则输出"success”。

class LengthError(Exception):
    def __init__(self, data):
        Exception.__init__(self, data)
        self.data = data

    def __str__(self):
        return "The input is of length {}, expecting at least 5".format(self.data)


def main4():
    x = input("请输入字符串:")
    if len(x) < 5:
        raise LengthError(len(x))
    else:
        print("success")


print("------------------实验四--------------------")
main4()

Python实验报告五 python基础试题练习_第4张图片

 二:

#  编写程序,要求从键盘输入三个数字(整形或者浮点型),判断这三个数字是否能构成一个三角形。如果可以构成一个三角形,则计算三角形的周长。
#
# 	1)自定义异常类IllegalArgumentException,对应异常信息为:“a,b,c不能构成三角形”
#
# 	2)自定义异常类IllegalArgLenException,对应异常信息为:“参数个数不正确”
#
# 	3)确保键盘输入的是三个值,如果输入值不为3,则抛出IllegalArgLenException异常。
#
# 	4)确保输入是数字类型,否则抛出类型错误异常。
#
# 	5)如果输入的三个数不能构成三角形则抛出IllegalArgumentException异常.如果可以构成则显示三角形三个边长,并计算并打印它的周长。
#
# 	6)不管是否发生异常,程序都会在处理完毕后显示"程序运行结束"。

class IllegalArgLenException(Exception):
    def __init__(self, data):
        Exception.__init__(self, data)
        self.data = data

    def __str__(self):
        return "{} not is three".format(self.data)


class IllegalArgumentException(Exception):
    def __init__(self, data):
        Exception.__init__(self, data)
        self.data = data

    def __str__(self):
        return "{}这三个数不能构成三角形".format(self.data)


def main5():
    lis = input("请输入三个数:").split(" ")
    try:
        if len(lis) != 3:
            raise IllegalArgLenException(len(lis))
        lis2 = [float(lis[0]), float(lis[1]), float(lis[2])]
        if lis2[0] < 0 or lis2[1] <= 0 or lis2[2] <= 0 or \
                lis2[0] + lis2[0] <= lis2[1] or lis2[1] + lis2[2] <= lis2[0] or lis2[0] + lis2[2] <= lis2[1]:
            raise IllegalArgumentException(lis2)
        else:
            print("三角形的周长为:{}".format(lis2[0] + lis2[1] + lis2[2]))
    finally:
        print("程序运行结束")


print("------------------实验五--------------------")
main5()

Python实验报告五 python基础试题练习_第5张图片

 三:

# 录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不及格的形式,最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理(小于0或者大于100)的情况,请编写程序。
def main6():
    score = float(input("请输入学生的成绩:"))
    assert 0 <= score <= 100, "成绩不合法"
    if score < 60:
        print("成绩为D")
    elif 60 <= score < 70:
        print("成绩为C")
    elif 70 <= score < 80:
        print("成绩为B")
    else:
        print("成绩为A")


print("------------------实验六--------------------")
main6()

Python实验报告五 python基础试题练习_第6张图片

 

你可能感兴趣的:(Python,python,开发语言)