1. 程式人生 > 其它 >領航團Python速成營實戰作業

領航團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