文件实验:
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"下所有的空文件夹。
异常实验:
4、 自己定义一个异常类,继承Exception类, 捕获下面的过程:判断input()输入的字符串长度是否小于5,
如果小于5,比如输入长度为3则输出:“The input is of length 3, expecting at least 5“,大于5则输出"success”。
5、编写程序,要求从键盘输入三个数字(整形或者浮点型),判断这三个数字是否能构成一个三角形。如果可以构成一个三角形,则计算三角形的周长。
1)自定义异常类IllegalArgumentException,对应异常信息为:“a,b,c不能构成三角形”
2)自定义异常类IllegalArgLenException,对应异常信息为:“参数个数不正确”
3)确保键盘输入的是三个值,如果输入值不为3,则抛出IllegalArgLenException异常。
4)确保输入是数字类型,否则抛出类型错误异常。
5)如果输入的三个数不能构成三角形则抛出IllegalArgumentException异常.如果可以构成则显示三角形三个边长,并计算并打印它的周长。
6)不管是否发生异常,程序都会在处理完毕后显示"程序运行结束”。
6、录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不及格的形式,最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理(小于0或者大于100)的情况,请编写程序。

#第一题
f = open('data.txt', 'w+')
for i in range(100):
    a = i+1
    for n in range(100*(a-1), 100*a):
        judge = 0
        c = n ** 0.5 + 1
        c = int(c)
        if n == 1:
            continue
        if n == 2:
            f.write(" %d " % n)
        elif n % 2 == 0:
            continue
        for i in range(3, c, 2):
            if n % i == 0:
                judge = 1
                break
        if judge == 0:
            f.write(" %d " % n)
    f.write("\n")
f.close()
print("over")


#第二题
import random
class InformationGenerator:
    def __init__(self):
        self.__name1_dict = {}
        with open(r'firstname.txt', 'r') as f:
            line = f.readline()
            while (line != ''):
                [name, weight] = line.split()
                self.__name1_dict[name] = int(weight)
                line = f.readline()

        self.__name2_sex_list = []
        with open(r'secondname.txt', 'r') as f:
            line = f.readline()
            while (line != ''):
                (name, sex) = line.split()
                self.__name2_sex_list.append((name, sex))
                line = f.readline()

    def createFamilyName(self):
        sum = 0
        # print(self.__name1_dict)
        for k, v in self.__name1_dict.items():
            sum += v

        r = random.randint(1, sum)

        sum = 0
        for k, v in self.__name1_dict.items():
            if r <= sum + v:
                return k
            sum = sum + v
        return 'yang'

    def createSnameAndSex(self):
        r = random.randint(0, len(self.__name2_sex_list) - 1)
        (name, sex) = self.__name2_sex_list[r]
        if sex == '0':
            r = random.randint(1, 2)
            sex = str(r)
        return (name, sex)

    def createScore(self):
        mu = 73
        sigma = 30
        r = random.normalvariate(mu, sigma)
        while r < 0 or r > 100:
            r = random.normalvariate(mu, sigma)
        return r

    def ask(self):
        faname = self.createFamilyName()
        sname, sex = self.createSnameAndSex()
        score = self.createScore()
        return (faname + sname, sex, score)
#第三题

import os

print(os.getcwd())  # 获取当前工作目录
path = "C:\\Windows\\System32"
for home, dir, file in os.walk(path):  # home 文件夹路径    dir  子文件夹列表   file  文件列表
    #   os.listdir() 输出该路径下的所有文件和目录名称
    if len(os.listdir(home)) == 0:
        print(home)
#第四题
class MyException(Exception):

    def __init__(self, str_input):
        super().__init__()
        self.str_input = str_input

    def __str__(self):
        if len(self.str_input) < 5:
            return 'The input is of length 3,expecting at least 5'
        else:
            return 'print sucess'


try:
    raise MyException('aaaa')
except MyException as e:
    print(e)
# 第五题
class lllegalArgumentException(Exception):
    def __init__(self, data):
        Exception.__init__(self, data)
        self.data = data

    def __str__(self):
        return 'a,b,c不能构成三角形'


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

    def __str__(self):
        return '参数个数不正确'


try:
    number = list(input('请输入三个参数\n').split())
    if len(number) < 3:
        raise lllegalArgLenException(number)
    number.sort()
    a = int(number[0])
    b = int(number[1])
    c = int(number[2])
    if a + b < c:
        raise lllegalArgumentException(a + b < c)
    else:
        print('{},{},{}围成的三角形周长为{}'.format(a, b, c, a+b+c))

except lllegalArgLenException as e:
    print('参数个数不正确')
except lllegalArgumentException as e:
    print('a,b,c不能构成三角形')
except ValueError as e:
    print('参数类型错误')
finally:
    print('程序运行结束')
#第六题
sorce = int(input("请输入成绩\n"))
assert (0 < sorce < 100), '输入成绩有误'
if sorce < 60:
    print(f'D,{sorce}')
elif sorce < 80:
    print(f'C,{sorce}')
elif sorce < 90:
    print(f'B,{sorce}')
else:
    print(f'A,{sorce}')