領航團Python速成營實戰作業
技術標籤:python
**
領航團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