Python快速程式設計入門課後程式題答案

qwer1030274531發表於2021-01-19

前言

本文只是簡單的整理了一下課後習題的程式設計題,具體的填空、選擇、判斷

第一章

1、編寫一個Python程式,輸出如下圖效果。

++++++++++
+        +
++++++++++

print("+++++++++++")print("+         +")print("+++++++++++")

2、編寫一個Python程式,輸出如下語句。

學Python,來傳智播客黑馬程式設計師
學Python,來傳智播客黑馬程式設計師
學Python,來傳智播客黑馬程式設計師
學Python,來傳智播客黑馬程式設計師
學Python,來傳智播客黑馬程式設計師

print("學Python,來傳智播客黑馬程式設計師")print("學Python,來傳智播客黑馬程式設計師")print("學Python,來傳智播客黑馬程式設計師")print("學Python,來傳智播客黑馬程式設計師")print("學Python,來傳智播客黑馬程式設計師")

第二章

1、輸入直角三角形的兩個直角邊的長度 a、b,求斜邊 c的長度。

import matha=float(input("請輸入斜邊 1 的長度")) #輸入實數b=float(input("請輸入斜邊 2 的長度")) #輸入實數c=a*a+b*b #計算,得到的是斜邊的平方c=math.sqrt(c) #開方,得到的是斜邊長print("斜邊長為:",c) #顯示,一項是字串,一項是 c 表示的斜邊長

2、編寫一個程式,用於實現兩個數的交換。

# 使用者輸入x = input('輸入 x 值: ')y = input('輸入 y 值: ')# 不使用臨時變數x,y = y,xprint('交換後 x 的值為: {}'.format(x))print('交換後 y 的值為: {}'.format(y))

第三章

1、編寫一個程式,使用for迴圈輸出0~10之間的整數。

for i in range(1,11):print(i)

2、編寫一個程式,判斷使用者輸入的數是正數還是負數。

a=int(input("請輸入一個數:"))if a>0:print("a是一個正數")elif a<0:print("a是一個負數")else:print("a等於0")

3、編寫一個程式,輸出九九乘法表。

i=1while i<10:j=1while j<=i:print("%d*%d=%-2d "%(i,j,i*j),end='')j+=1print("\n")i+=1

第四章

1、接收輸入的一行字元,統計出字串中包含數字的個數。

myStr = input("請輸入任意字串:")num = 0for s in myStr:if s.isdigit():num += 1print(num)

2、請輸入星期幾的第1個字母,用來判斷是星期幾,如果第1個字母一樣,則繼續判斷第2個字母,以此類推。

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']while True:myStr = input("請輸入任意一個字母:")upMyStr = myStr.upper()for weekS in week:if upMyStr == weekS[0]:if weekS.startswith("M"):print("星期一")elif weekS.startswith("W"):print("星期三")elif weekS.startswith("F"):print("星期五")elif weekS.startswith("T") or weekS.startswith("S"):secondStr = input("請再輸入任意一個字母:")newStr = upMyStr+secondStrprint(newStr)for weekStr in week:if weekStr.find(newStr,0,2) != -1:if newStr == "Tu":print("星期二")elif newStr == "Th":print("星期四")elif newStr == "Sa":print("星期六")elif newStr == "Su":print("星期日")breakbreak

3、編寫一個程式,計算字串中子串出現的次數。

str = "Hello,welcome to itheima!!"print(str.count("o"))

第五章

1、編寫一個函式,用於判斷使用者輸入字串是否由小寫字母和數字構成。

def message():myStr = input("請輸入密碼,只能為小寫字母和數字:")if myStr.isalnum() and myStr.lower() == myStr:print("符合要求")else:print("不符合要求")

2、請根據下述需求,編寫一個程式。

使用者輸入一個字串,將下標為偶數的字元提出來合併為一個新的字串A,再將下標為奇數的字元提出來合併成為一個新的字串B,再將字串A和B連線起來並且輸出。

arr = []evenStr = ""oddStr = ""message = input("請輸入任意字串:")for string in message:arr.append(string)for eStr in (arr[::2]):evenStr = evenStr+eStrfor oStr in (arr[1::2]):oddStr = oddStr+oStrprint(evenStr+oddStr)

3、請編寫一個程式,用於統計字串中每個字母出現的次數(字母忽略大小寫,a和A看做是一個字母),統計出的結果,請按照[‘a’:3,’b’:2]的格式輸出。

arr = []def count():myStr = input("請輸入只包含字母的字串:")if myStr.isalpha():newStr = myStr.lower()for string in newStr:arr.append(string)a = {}for i in arr:if arr.count(i) >= 1:a[i] = arr.count(i)print(a)else:print("輸入的內容有誤")count()

4、請根據下列需求,編寫一個程式。

使用者輸入一個字串,請將字串中所有字母全部後移動一位,最後一個字母放到字串的開頭,最後將新的字串輸出。

arr = []result = ""myStr = input("請輸入字串:")for string in myStr:arr.append(string)last = arr[-1]arr.remove(last)arr.insert(0,last)for new in arr:result = result + newprint(result)

5、假設有個列表儲存奇數個數字,請編寫程式,輸出中間位置的數字。

arr = []n = int(input("請輸入列表元素的個數(奇數):"))for i in range(n):num = int(input("請輸入第%d個數:"%(i+1)))arr.append(num)arr.sort()print("該列表中間位置的數字為:",arr[n//2])

6、已知info=[1,2,3,4,5],請透過兩種程式設計方法,將列表變成info=[5,4,3,2,1]。

#第一種:arr = [1,2,3,4,5]arr.reverse()print(arr)
#第二種:arr = [1,2,3,4,5]arr.sort(reverse=True)print(arr)

7、請編寫一個函式滿足下列需求:

使用者輸入n,然後輸入n個整數到列表中,列表中的n個整數需要使用冒泡進行排序,並將排序後的結果輸出。

arr = []length = int(input("請輸入數字的總個數:"))i = 0while i < length:num =  int(input("輸入第%d個數字:"%(i+1)))arr.append(num)i+=1print("排序前:%s"%arr)# 對列表排序for i in range(length):flag = 0for j in range(1,length):if arr[j-1] > arr[j]:arr[j-1],arr[j] = arr[j],arr[j-1]flag = 1if not flag:breakprint("排序後:%s"%arr)

8、請編寫一個程式,實現刪除列表中重複元素的功能。

arr = []length = int(input("請輸入列表的總個數:"))i = 0while i < length:element =  input("輸入第%d個元素:"%(i+1))arr.append(element)i+=1# 列表轉為集合newList = set(arr)print(newList)

9、假設有兩個3×3的矩陣,請編寫一個程式,計算這兩個矩陣的和並輸出。

def add(a, b):# 下面兩行保證輸入的a和b是維數相同的矩陣,根據實際情況不要也可以assert (len(a) == len(b))assert (all([len(a[i]) == len(b[i]) == len(a[0]) for i in range(len(a))]))i, j = len(a), len(a[0])c = [[0] * j] * ifor m in range(i):for n in range(j):c[m][n] = a[m][n] + b[m][n]return ca = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]b = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]c = add(a, b)print(c)

10、請編寫一個程式,使用字典儲存學生資訊,學生資訊包括學號和姓名,請根據學生學號從小到大輸出學生的資訊。

dic = {}i=0while i<3:number = input("輸入學生學號:")name = input("輸入學生姓名:")dic.__setitem__(number,name)i+=1print("排序前:%s"%dic)def dict2list(dic:dict):''' 將字典轉化為列表 '''keys = dic.keys()vals = dic.values()lst = [(key, val) for key, val in zip(keys, vals)]return lstnew = sorted(dict2list(dic), key=lambda x:x[0], reverse=False)print("排序後:%s"%new)

11、已知一個字典包含若干員工資訊(姓名和性別),請編寫一個函式,刪除性別為男的員工資訊。

def delMale(dict):keys = []values = []for (key,value) in dict.items():keys.append(key)values.append(value)for value in values:if value == 0:index = values.index(value)arrKey = keys[index]del dict[arrKey]values[index] = 3keys[index] = "佔位"dic = {"小明":0, "小紅":1,"小蘭":1,"小白":0}print("刪除前:%s"%dic)delMale(dic)print("刪除後:%s"%dic)

12、已知一個列表儲存了多個整數,請編寫函式,刪除列表中的素數。

# 錯誤的版本arr = [12,3,37,7,91,67,27,45,6]def delPrime(arr):for element in arr:# 質數大於 1if element > 1:# 檢視因子for i in range(2, element):if (element % i) == 0:breakelse:arr.remove(element)delPrime(arr)print(arr)
# 正確的版本arr1 = [12,3,37,7,91,67,27,45,6]arr2 = [12,3,37,7,91,67,27,45,6]def delPrime(arr1):for element in arr2:# 質數大於 1if element > 1:# 檢視因子for i in range(2, element):if (element % i) == 0:breakelse:arr1.remove(element)delPrime(arr1)print(arr1)

第六章

1、定義一個getMax()函式,返回三個數(從鍵盤輸入的整數)中的最大值。
例如:

請輸入第1個整數:10
請輸入第2個整數:15
請輸入第3個整數:20
其中最大值為:20

def getMax():num1 = int(input("請輸入第1個整數:"))num2 = int(input("請輸入第2個整數:"))num3 = int(input("請輸入第3個整數:"))temp = 0 # 臨時變數,存放中間產生的第2大數值if num1 > num2:temp = num1else:temp = num2if temp>num3:return "其中最大值為:"+ str(temp)else:return "其中最大值為:"+ str(num3)maxValue = getMax()print(maxValue)

2、編寫函式,求出“1/(1×2)-1/(2×3)+1/(3×4)-1/(4×5)+···”前 n項的和,函式以n為引數,它是使用者輸入的。

def sum(n):res = 0while n >= 1:if n%2 == 0:res -= 1.0/(n*(n+1))else:res += 1.0/(n*(n+1))n-=1return resnum = int(input("請輸入一個整數:"))print(sum(num))

3、迴文數是一個正向和逆向都相同的整數,如 123454321、9889。編寫函式判斷一個整數是否是迴文數。

def is_palindrome(n):n = str(n)m = n[::-1]return n == mresult = is_palindrome(1247321)print(result)

4、編寫函式,判斷輸入的三個數字是否能構成三角形的三個邊。

def sjx(a, b, c):if (a + b > c and a + c > b and b + c > a):return "能構成三角形"else:return "不能構成三角形"result1 = sjx(3, 4, 5)print(result1)result2 = sjx(1, 1, 2)print(result2)

5、編寫函式,求兩個正整數的最小公倍數。

# 定義函式def lcm(x, y):#  獲取最大的數if x > y:greater = xelse:greater = ywhile(True):if((greater % x == 0) and (greater % y == 0)):lcm = greaterbreakgreater += 1return lcm# 獲取使用者輸入num1 = int(input("輸入第一個數字: "))num2 = int(input("輸入第二個數字: "))print( num1,"和", num2,"的最小公倍數為", lcm(num1, num2))

第七章

1、已知有個列表[1,2,3,4,5],讓列表的每個元素加1,把結果不能被2整除的元素篩選出來。

result = filter(lambda x:(x+1)%2, [1, 2, 3, 4, 5])print(result)

第八章

1、讀取一個檔案,顯示除了以#開頭的行以外的所有行。

new = []f = open('itheima.txt', 'r')#首先要有這個函式contents = f.readlines()for ele in contents:if ele.startswith('#') == False:print(ele)f.close()

2、製作一個“密碼簿”,其可以儲存一個網址(如)和一個密碼(如123456),請編寫程式完成這個“密碼簿”的增刪查改功能,並且實現檔案儲存功能。

# 密碼薄passwordBook = {}def add(password, value):if password not in passwordBook.keys():passwordBook[password] = valuesave()else:print("該密碼已存在")def delete(password):if password in passwordBook.keys():del passwordBook[password]print(passwordBook)save()else:print("該密碼不存在")def modify(password, newValue):if password in passwordBook.keys():passwordBook[password] = newValueprint(passwordBook)save()else:print("該密碼不存在")def find(value):if value in passwordBook.values():print("該網址存在")else:print("該網址不存在")def save():f = open("password.txt","w")f.write(str(passwordBook))f.close()def printInfo():print("密碼簿的功能如下:")print("1.新增")print("2.刪除")print("3.修改")print("4.查詢")i = 0while i<5:printInfo()num = int(input("請輸入要選擇的功能:"))if num==1:web = input("請輸入存入的網址:")password1 = input("請輸入密碼:")add(password1, web)print(passwordBook)elif num==2:password2 = input("請輸入密碼:")delete(password2)elif num==3:password3 = input("請輸入密碼:")value3 = input("請輸入新的網址:")modify(password3,value3)elif num==4:value4 = input("請輸入要查詢的網址:")find(value4)i+=1

3、已知文字檔案中存放了若干數字,請編寫程式讀取所有的數字,排序以後進行輸出。

f = open("itheima.txt","r")#首先要有這個檔案content = list(eval(f.read()))content.sort()print(content)

4、開啟一個英文的文字檔案,將該檔案中的每一個英文字母加密後寫入到一個新的檔案。加密的方法是:將A變成B,B變成C,······,Y變成Z,將Z變成A;a變成b,b變成c,······,y變成z,z變成a,其他字元不變化。 

f = open("itheima.txt","r")content = f.read()newStr = ""for string in content:temp = ord(string)if temp in range(65,91):if temp == 90:char1 = chr(temp-25)newStr += char1else:char2 = chr(temp+1)newStr += char2elif temp in range(97,123):if temp == 122:char3 = chr(temp-25)newStr += char3else:char4 = chr(temp + 1)newStr += char4else:newStr = newStr+stringf.close()f2 = open("itheima-加密後.txt","w")f2.write(newStr)f2.close()

5、開啟一個英文文字檔案,編寫程式讀取其內容,並把其中的大寫字母變成小寫字母,小寫字母變成大寫字母。

f = open(r'd:\1.txt','r')s = f.readlines()f.close()r = [i.swapcase() for i in s]f = open(r'd:\2.txt','w')f.writelines(r)f.close()

6、編寫程式,把包含學生成績的字典儲存為二進位制檔案,然後再讀取內容並顯示。

import pickled = {'張三':98,'李四':90,'王五':100}print(d)f = open('score.dat','wb')pickle.dump(1,f)pickle.dump(d,f)f.closef = open('score.dat','rb')pickle.load(f)d = pickle.load(f)f.close()print(d)

第九章

1、假設成年人的體重和身高存在此種關係: 
                 身高(釐米)-100=標準體重(千克)

如果一個人的體重與其標準體重的差值在正負5%之間,顯示“體重正常”,其他顯示“體重超標”或者“體重不超標”。編寫程式,能處理使用者輸入的異常,並且使用自定義異常類來處理身高小於30cm,大於250cm的異常情況。

class HeightException(Exception):passtry:height = int(input("請輸入您的身高:"))if height<30 or height>250:raise HeightExceptionweight = int(input("請輸入您的體重:"))weightS = height-100if weight > weightS and weight-weightS < 0.05*weightS:print("體重達標")elif weight < weightS and weightS-weight < 0.05*weightS:print("體重達標")else:print("體重不達標")except HeightException:print("您輸入的身高有誤")

2、錄入一個學生的成績,把該學生的成績轉換為A優秀、B良好、C合格、D不合格的形式,最後將該學生的成績列印出來。要求使用assert斷言處理分數不合理的情況。

try:score = int(input("請輸入學生的成績:"))if score>=90 and score<=100:print("A:優秀")elif score>=80 and score<90:print("B:良好")elif score>=60 and score<80:print("C:合格")else:assert score>60,"D:不及格"except Exception as result:print("低於60分:\n",result)

第十章  

1、建一個模組檔案。在該檔案中,定義一個函式,用於交換兩個數的值。

def changeNum1AndNum2(num1, num2):temp = num1num1 = num2num2 = tempreturn (num1, num2)

第十一章

1、設計一個Circle(圓)類,包括圓心位置、半徑、顏色等屬性。編寫構造方法和其他方法,計算周長和麵積。請編寫程式驗證類的功能。

class Circle:def __init__(self,tup, radius, color):self.center = tupself.radius = radiusself.color = colordef perimeter(self):return 3.14 * 2 * self.radiusdef area(self):return 3.14 * self.radius * self.radiuscircle = Circle((0,0),5,"藍色")print(circle.perimeter())print(circle.area())

2、設計一個課程類,包括課程編號、課程名稱、任課教師、上課地點等屬性,把上課地點變數設為私有的,增加構造方法和顯示課程資訊的方法。

class Curriculum:def __init__(self):self.number = 1001self.name = "語文"self.teacher = "小明"self.__address = "2號教學樓3層305室"def __str__(self):return """            課程編號:%d            課程名稱:%s            任課教師:%s            上課地點:%s        """%(self.number,self.name,self.teacher,self.__address)curri = Curriculum()print(curri)

第十二章

1、設計一個表示學生的類:Student,該類的屬性有)name(姓名,age(年齡),scores(成績,包含語文、數學和英語三科成績,每科成績的型別為整數),另外此類還有3個方法。

(1)獲取學生的方法:get_name(),返回型別為str。
(2)獲取年齡的方法:get_age(),返回型別為int。
(3)返回3門科目中最高的分數:get_course(),返回型別為int。

class Student(object):# 構造方法def __init__(self, name, age, scores):self.__name = name     # 姓名self.__age = age       # 年齡self.__scores = scores # 分數def get_name(self):return self.__namedef get_age(self):return self.__agedef get_course(self):return max(self.__scores)stu = Student('小丸子', 18, [89, 90, 91])print("姓名:%s"%(stu.get_name()))print("年齡:%s"%(stu.get_age()))print("最高分:%s"%(stu.get_course()))

2、設計一個表示動物的類:Animal,其內部有一個color(顏色)屬性和call(叫)的方法。再設計一個表示Fish(魚)類,該類中有tail(尾巴)和color屬性,以及一個call(叫)方法。
提示: 讓Fish類繼承自Animal類,重寫init和call方法。

class Animal(object):def __init__(self, color):self.color = color #顏色def call(self):print("動物叫")class Fish(Animal):def __init__(self, color):super().__init__(color)self.tail = Truedef call(self):print("-%s的魚在吐泡泡-"%self.color)fish = Fish("藍色")fish.call()


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2750935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章