文件实验:
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}')