1. 程式人生 > >零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

小編總結了五十道適合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

知識點

  1. 輸入一組整數
  2. 矩陣的輸入
  3. 矩陣乘法
  4. 矩陣的輸出
  5. 輸出的值佔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接收到的整數分裝到兩個矩陣內。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

對於以上程式碼,解釋如下:

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列矩陣的每一個元素的值。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

對於以上程式碼,說明如下:

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”。這裡,=代表的是空格。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

完整程式碼:

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

題二、找對稱數

問題描述

問題描述 已知10個四位數輸出所有對稱數及個數 n,例如1221、2332都是對稱數

輸入形式 10個整數,以空格分隔開

輸出形式 輸入的整數中的所有對稱數,對稱數個數

樣例輸入 1221 2243 2332 1435 1236 5623 4321 4356 6754 3234

樣例輸出 1221 2332 2

樣例說明 為測試程式健壯性,輸入數中可能包括3位數、5位數等

不考慮3位數、5位數的情形:

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

在學習中有迷茫不知如何學習的朋友小編推薦一個學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的長度。它會接在前面的輸出內容尾部。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

考慮3位數、5位數的情形:

在上一節的程式碼基礎上,增加下面所列的第4,5行,就實現了考慮3位數,5位數的情形。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

小結

  1. 判斷對稱數的做法是,把4位數轉換為字串,然後比對第1,4位是否相同,第2,3位是否相同,都相同的話,就是對稱的。
  2. 用函式來定義判斷對稱數的邏輯,是好做法。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

三、求月份天數

題目描述

問題描述

編寫程式輸入年(year)、月(month),輸出該年份該月的天數。

公曆閏年的計算方法為:

年份能被4整除且不能被100整除的為閏年
或者,年份能被400整除的是閏年。

輸入描述

共一行。有兩個整數,第一個是年份,第二個是月份。年份和月份之間以一個空格隔開。

輸出描述

輸出該年該月的天數。

輸入示例

2017 11

輸出示例

30

只考慮平年情況的解法

下一節我們會考慮閏年情況。你會發現,只要一點點改動,就能實現閏年的處理。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

第10行,[yue - 1]是因為列表索引是從0開始的。

考慮閏年情況的解法

我們用一個函式來判斷一個年份是否是閏年。

零基礎學Python需要學會的五十道習題!全會了基礎基本就過了!

 

與只考慮平年的程式碼版本相比,有兩點改動:

1. 定義了判閏年的函式。見1到5行。

2. 增加了15和16行。

其他行沒有任何改動。

小結

這裡,分兩步完成任務。第一步只考慮平年,第二步加了閏年情形。這種做法值得提倡。

用列表來儲存各月的天數。使得輸入的月份可作為索