**
领航团Python速成营
**
课程链接:https://aistudio.baidu.com/aistudio/course/introduce/7073
**
作业一
**
1. 输入两个整数,并打印出它们的和
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
# 分别把 a、b 转换成整数
a=int(a)
b=int(b)
# 计算 a、b 的和,赋值给变量c
c=a+b
# 打印c
print(c)
**
2. 输入两个整数,如果两个整数之和小于100,则输出 ‘小于100’,否则输出 '不小于100’
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a=int(a)
b=int(b)
c=a+b
if c<100:
print('小于100')
else:
print('不小于100')
**
3. 输入两组姓名和年龄,然后存入一个字典,并输出
name1 = input('请输入第一个姓名: ')
age1= input('请输入第一个年龄: ')
name2 = input('请输入第二个姓名: ')
age2 = input('请输入第二个年龄: ')
# 分别把age1和age2转成整数
age1=int(age1)
age2=int(age2)
# 构造字典dict_name
dict_name = {name1:age1,name2:age2}
# 打印字典
print(dict_name)
**
4. 依次输入10组整数,然后求和,并输出
sum_num = 0
for i in range(10):
# 用input输入数字并转化为整数
i=input('请输入10组整数:')
i=float(i)
i=int(i)
sum_num=sum_num+i
print(sum_num)
)
**
**
## 作业二
**
**1. 选取列表的第2到第5项,并打印**
**
```python
words = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
# 选取第2-5项,并打印
words[2:6]
**
2. 使用列表生成式的方法,根据 list1 生成 list2
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list2 = [100, 200, 300, 400, 500, 600, 700, 800]
**
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 列表推导式生成list2list2=[n*100 for n in list1]
print(list2)
**
3. 把下列字符串按下划线(’_’)划分成若干个片段
string1 = ‘this_is_a_sample’
# 生成按’_'划分的字符串列表,即下列内容
[‘this’, ‘is’, ‘a’, ‘sample’]
**
程序如下:
string1 = 'this_is_a_sample'
# 按'_'划分string1
string1.split('_')
**
作业三
**
作业内容
统计英语6级试题中所有单词的词频,并返回一个如下样式的字典
{‘and’:100,‘abandon’:5}
**
英语6级试题的文件路径./artical.txt
**
Tip: 读取文件的方法
def get_artical(artical_path):
with open(artical_path) as fr:
data = fr.read()
return data
get_artical('./artical.txt')
**
处理要求
(a) '\n’是换行符 需要删除
**
(b) 标点符号需要处理
[’.’, ‘,’, ‘!’, ‘?’, ‘;’, ‘’’, ‘"’, ‘/’, ‘-’, ‘(’, ‘)’]
**
© 阿拉伯数字需要处理
[‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘0’]
**
(d) 注意大小写 一些单词由于在句首,首字母大写了。需要把所有的单词转成小写
‘String’.lower()
**
(e) 高分项
通过自己查找资料学习正则表达式,并在代码中使用(re模块)
可参考资料:https://docs.python.org/3.7/library/re.html
**
# 请根据处理要求下面区域完成代码的编写。
def get_artical(artical_path):
with open(artical_path) as fr:
data = fr.read()
return data
# get_artical()为自定义函数,可用于读取指定位置的试题内容。
# get_artical('./artical.txt')
mystr=get_artical('./artical.txt')
mystr=mystr.lower()
str1=['.', ',', '!', '?', ';', '\'', '\"', '/', '-', '(', ')']
str2=['1','2','3','4','5','6','7','8','9','0']
for ch in str1:
mystr=mystr.replace(ch," ")
for ch in str2:
mystr=mystr.replace(ch," ")
words=mystr.split()
counts={}
for w in words:
if w!=' ':
counts[w]=counts.get(w,0)+1
for key in counts:
print("{},{}".format(key, counts[key]))
**
作业六
#第一题(30分)
数据如下:
stu1.txt 孙同学,2020-5-21,20,‘男’,77,56,77,76,92,58,-91,84,69,-91
stu2.txt 赵同学,2020-11-3,24,‘女’,65,68,72,95,-81,71,86,91,57,91
stu3.txt 王同学,2021-8-7,25,‘男’,87,78,90,-76,88,47,100,65,69,100
stu4.txt 李同学,2021-8-10,29,‘男’,92,54,85,71,-91,68,77,68,95,95
以上四个txt文档在work路径下可以找到。
定义Student类,包括name、dob、age、gender和score属性,包括top3方法用来返回学生的最大的3个成绩(可重复)、sanitize方法用来将负的分数变为正的分数,负的分数可能是输入错误。声明stu_list对象组数用于存储所有的学生对象。最后输出所有的学生信息包括姓名、生日、年龄、性别、最高的3个分数。
第一题的输出结果如下,供参考:
# 请在此处完成代码
def opentext(txt):
with open(txt) as f:
line = f.readline()
# print(line.strip().split(','))
return line.strip().split(',')
class Student():
def __init__(self, name, dob, age, gender, score):
self.name = name
self.dob = dob
self.age = age
self.gender = gender
self.score = score
def name(self):
return self.name
def dob(self):
return self.dob
def age(self):
return self.age
def gender(self):
return self.gender
def top3(self):
newlist = []
for t in self.score:
t = int(t)
if t < 0 :
t = -t
newlist.append(t)
return sorted(newlist)[::-1][:3]
def printf(textname):
txtlist = opentext(textname)
name = txtlist.pop(0)
dob = txtlist.pop(0)
age = txtlist.pop(0)
gender = txtlist.pop(0)
student = Student(name, dob, age, gender, txtlist)
# print(student.name)a
print(f'姓名:{student.name} 生日:{student.dob} 年龄:{student.age} 性别:{student.gender} 分数:{student.top3()}')
printf('work/stu1.txt')
printf('work/stu2.txt')
printf('work/stu3.txt')
printf('work/stu4.txt')
输出结果为:
姓名:孙同学 生日:2020-5-21 年龄:20 性别:‘男’ 分数:[92, 91, 91]
姓名:赵同学 生日:2020-11-3 年龄:24 性别:‘女’ 分数:[95, 91, 91]
姓名:王同学 生日:2021-8-7 年龄:25 性别:‘男’ 分数:[100, 100, 90]
姓名:李同学 生日:2021-8-10 年龄:29 性别:‘男’ 分数:[95, 95, 92]
第二题(30分)
数据格式如下:
stu5.txt 特长同学,2020-10-5,20,‘男’,180,87,98,77,76,92,58,-76,84,69,-47
stu6.txt 特长同学,2020-10-6,20,‘女’,230,76,48,82,88,92,58,-91,84,69,-68
以上两个txt文档在work路径下可以找到。
定义Spostudent、Artstudent为Student的子类,在子类的属性里面新增了spe为特长分数。Spostudent包括的top3方法返回的是最低的3个得分(可重复),Artstudent包括top3方法返回的是最高的3个得分(可重复),最后使用多态的方式输出2个特长同学的姓名、生日、年龄、性别、分数、特长分。
第二题的输出结果如下,供参考:
# 请在此处完成代码
class Spostudent(Student):
def __init__(self, name, dob, age, gender, score, spe):
Student.__init__(self, name, dob, age, gender, score)
self.spe = spe
def spe(self):
return self.spe
class Artstudent(Student):
def __init__(self, name, dob, age, gender, score):
Student.__init__(self, name, dob, age, gender, score)
def top3(self):
newlist = []
for t in self.score:
t = int(t)
if t < 0 :
t = -t
newlist.append(t)
return sorted(newlist)[0:3]
def printf(text,a):
txtlist = opentext(text)
name = txtlist.pop(0)
dob = txtlist.pop(0)
age = txtlist.pop(0)
gender = txtlist.pop(0)
spe = txtlist.pop(0)
spostudent = Spostudent(name, dob, age, gender, txtlist, spe)
artstudent = Artstudent(name, dob, age, gender, txtlist)
if a == 0:
a = spostudent.top3()
else:
a = artstudent.top3()
print(f'姓名:{spostudent.name} 生日:{spostudent.dob} 年龄:{spostudent.age} 性别:{spostudent.gender} 分数:{a} 特长分:{spostudent.spe}')
#printf('work/stu5.txt', 1)
#('{spostudent.gender} 分数:{a} 特长分:{spostudent.spe}')
printf('work/stu5.txt', 1)
printf('work/stu6.txt', 0)
输出结果为:
姓名:特长同学 生日:2020-10-5 年龄:20 性别:‘男’ 分数:[56, 58, 69] 特长分:180
姓名:特长同学 生日:2020-10-6 年龄:20 性别:‘女’ 分数:[92, 91, 91] 特长分:230