零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!
小編總結了五十道適合Python初學者的練習題,非常適合練手,分享給大家!
題一、矩陣乘法
在開始之前先給大家點福利,小編準備了Python入門的系統教程等資料,私信小編髮送我要資料就可以自動領取了!
問題描述:
編寫程式,完成3*4矩陣和4*3整數矩陣的乘法,輸出結果矩陣。
輸入形式:
一行,供24個整數。以先行後列順序輸入第一個矩陣,而後輸入第二個矩陣。
輸出形式:
先行後列順序輸出結果矩陣,每個元素的顯示寬度為8格,螢幕一行只顯示矩陣的一行。
樣例輸入:
1 2 3 4 5 6 7 8 9 1 2 3 9 8 7 6 5 4 3 2 1 1 2 3
上面的輸入,意味著要計算如下兩個矩陣的乘積。
第一個矩陣 :
1 2 3 4
5 6 7 8
9 1 2 3
第二個矩陣:
9 8 7
6 5 4
3 2 1
1 2 3
樣例輸出】
左側的1,2,3不是程式輸出的內容。
34 32 30 110 100 90 96 87 78
知識點
- 輸入一組整數
- 矩陣的輸入
- 矩陣乘法
- 矩陣的輸出
- 輸出的值佔8格
一:輸入一組整數
line = input().split() nums = [] for s in line: nums.append(int(s)) print(nums)
對以上程式碼,說明如下:
1. 第1行,input()讀入整行,split()以空格為分隔符把整行分割成多段,生成數字字串列表line。
2. 第2行,nums變數用來儲存整數列表,初始化為空列表。
3. 第3,4行,for迴圈的作用是遍歷數字字串列表line內的每個元素s,把這個元素s轉換為整數後,加到nums列表尾部。
4. 第5行,列印nums列表的值,可以幫助檢查是否輸入成功。
二:生成兩個相乘的矩陣
步驟2是把步驟1接收到的整數分裝到兩個矩陣內。
對於以上程式碼,解釋如下:
1. 第2行,mtx1用來記住第一個矩陣。它是3行4列的矩陣。它的初值是空列表。
2. 第3行到第7行,是一個for迴圈。每迴圈一次,得到矩陣的一行。row變數用來記住這一行。
3. 第4行,row變數初始化為空列表。
4. 第5,6行,是一個for迴圈。每迴圈一次,就往row列表中加入一個整數。迴圈4次,就生成了一行。
5. 第7行,把矩陣的一行加到mtx1的尾部。mtx1是以列表作為元素的列表,也即矩陣。
6. 第9行開始,生成第二個矩陣mtx2。生成第二個矩陣的做法與生成第一個矩陣的做法是類似的。不同點有兩處。第一處是,矩陣的元素來自nums列表中start位置及其後的元素。第二處不同是,第二個矩陣是4行3列的。
7. print(mtx1)和print(mtx2)這兩條語句用於列印兩個矩陣的值,幫助檢查是否正確生成了兩個矩陣。不過,矩陣的元素在螢幕上沒有分行顯示,而是顯示在同一行。
三:矩陣相乘
3行4列的矩陣乘以4行3列的矩陣,結果是3行3列的矩陣。你事先要熟悉矩陣的乘法。
以下程式碼的思路是,依次求出3行3列矩陣的每一個元素的值。
對於以上程式碼,說明如下:
1. result用來儲存3行3列的矩陣。
2. 第2行到第7行構成一條for迴圈語句。一共迴圈3次。每迴圈一次,求出result矩陣的一行。
3. 第3行,row變數用來儲存矩陣的一行。初值設為空列表。
4. 第4行到第6行構成一條for迴圈語句。這是內迴圈。一共迴圈3次。每迴圈一次,求出第r行(r從0開始編號)中的一個元素的值。v變數記住這個值。第6行把v變數加到row列表尾部。
5. 第7行,row加到result矩陣尾部,成為新的一行。
四:輸出矩陣
輸出矩陣要滿足兩個要求:
1. 分成3行。
2. 每一行的每個元素佔8格。
程式碼:
for r in range(3): print(str(result[r][0]).rjust(8) + str(result[r][1]).rjust(8) + str(result[r][2]).rjust(8))
對以上程式碼說明如下:
1. for迴圈一共執行3次。每一次,輸出矩陣的一行。
2. str(result[r][0]).rjust(8)的作用是,首先把元素result[r][0]轉換為字串形式的值,然後呼叫字串的rjust方法,使得字串長度不足8格的話,左側填充空格。假設,result[r][0]值是34,那麼輸出的時候,左側將填充6個空格,形成有8個字元的字串,即“======34”。這裡,=代表的是空格。
完整程式碼:
題二、找對稱數
問題描述
問題描述 已知10個四位數輸出所有對稱數及個數 n,例如1221、2332都是對稱數
輸入形式 10個整數,以空格分隔開
輸出形式 輸入的整數中的所有對稱數,對稱數個數
樣例輸入 1221 2243 2332 1435 1236 5623 4321 4356 6754 3234
樣例輸出 1221 2332 2
樣例說明 為測試程式健壯性,輸入數中可能包括3位數、5位數等
不考慮3位數、5位數的情形:
在學習中有迷茫不知如何學習的朋友小編推薦一個學Python的學習q u n 227 -435- 450可以來了解一起進步一起學習!免費分享視訊資料
對上述程式碼,說明如下:
1. 第2到8行定義了判別一個整數是否是對稱數的函式is_duicheng。函式是一組語句的集合。第19行呼叫了is_duicheng函式,傳入要被判別的整數n。呼叫函式,就會執行函式包含的語句。第19行的n是實際引數,而第2行的n是形式引數,兩者的名字可以不同。
2. 我們把4位數轉換為字串,然後比對第1,4位是否相同,第2,3位是否相同,都相同的話,就是對稱的。
3. 第10到14行,輸入10個整數。第15行,是列印這10個整數,幫助我們判斷輸入動作對了沒有。
4. 第17行,duicheng_list變數用來儲存對稱的四位數。第18到20行求出所有對稱的四位數。
5. 第22,23行,輸出所有。這樣,輸出d的值後,在其尾部接一個空格,且不換行。第24行,輸出對稱數的個數,也就是duicheng_list的長度。它會接在前面的輸出內容尾部。
考慮3位數、5位數的情形:
在上一節的程式碼基礎上,增加下面所列的第4,5行,就實現了考慮3位數,5位數的情形。
小結
- 判斷對稱數的做法是,把4位數轉換為字串,然後比對第1,4位是否相同,第2,3位是否相同,都相同的話,就是對稱的。
- 用函式來定義判斷對稱數的邏輯,是好做法。
三、求月份天數
題目描述
問題描述
編寫程式輸入年(year)、月(month),輸出該年份該月的天數。
公曆閏年的計算方法為:
年份能被4整除且不能被100整除的為閏年 或者,年份能被400整除的是閏年。
輸入描述
共一行。有兩個整數,第一個是年份,第二個是月份。年份和月份之間以一個空格隔開。
輸出描述
輸出該年該月的天數。
輸入示例
2017 11
輸出示例
30
只考慮平年情況的解法
下一節我們會考慮閏年情況。你會發現,只要一點點改動,就能實現閏年的處理。
第10行,[yue - 1]是因為列表索引是從0開始的。
考慮閏年情況的解法
我們用一個函式來判斷一個年份是否是閏年。
與只考慮平年的程式碼版本相比,有兩點改動:
1. 定義了判閏年的函式。見1到5行。
2. 增加了15和16行。
其他行沒有任何改動。
小結
這裡,分兩步完成任務。第一步只考慮平年,第二步加了閏年情形。這種做法值得提倡。
用列表來儲存各月的天數。使得輸入的月份可作為索