[Lidemy 學習筆記]-先別急著寫 leetcode U4//實作:判斷質數、好多星星、印出金字塔、印出聖誕樹、NM乘法表、水仙花數

--

目錄
1.寫在之前
2.前情提要
3.第一題:LIOJ 1020:判斷質數
4.第二題:LIOJ 1021:好多星星
5.第三題:LIOJ 1022:印出金字塔
6.第四題:LIOJ 1023:印出聖誕樹
7.第五題:LIOJ 1024:NM乘法表
8.第六題:LIOJ 1025:水仙花數
9.小心得
Photo by PHOUNIUS on Unsplash

寫在之前

前情提要

本系列文為學習Huli製作的課程先別急著寫leetcode的心得與實作分享,使用Python 語言,正學習到Unit 4開始感覺開始進入正題,多寫題目的階段了,這裡我覺得有幾個重點幫助我很多,如下:

  1. 加funciton 加爆: 其實這個的核心就是拆解題目,我們把題目的每一個功能先拆出來,拆出來變成一個個的function,接下來把function 實作出來,這個方法幫助我可以在解題的時候腦袋的思緒更清楚,也較好解題;相比把function 拆除混和在主程式裡面,有多個fuction 的程式邏輯我覺得更清楚。
  2. 先把題目簡化,再持續增加難度,這裡是以星星題作範例,星星題的最基本就是print 星星一層層遞增,接著的變形題如:聖誕樹、菱形、風箏,各種題目,但都是建立在一開始的星星題基礎上,所以遇到問題時先用最簡單、最基本的條件去解,再慢慢延伸,會更容易上手。
  3. 解題三寶:迴圈、函式、判斷式,光用這三個就可以解出很多題目,所以在接下來的練習題中,多使用這三種方式,較少使用一些套件,更可以訓練基礎扎實。

練習課堂上的範例們~~~

第一題LIOJ 1020:判斷質數

題目為先輸入第一個數字,此數字代表的是共有多少數,接下來依照第一個數分別依序輸入各數,且以換行分開,若為何數輸出Composite;若為質數輸出Prime,其中輸入1時輸出Composite,如下範例:

input :
5
1
2
3
4
5
output :
Composite
Prime
Prime
Composite
Prime
  • Python code:

在解的時候,就使用加function 的方法,把判斷是不是質數的功能寫成一個function,因此只要餵一個數字進去,接這判斷輸出,會單純很多好理解。

第二題LIOJ 1021:好多星星

題目為輸入一個數字N,依照規律印出星星們。

input :
1
output :
*
input :
10
output :
*
**
***
****
*****
******
*******
********
*********
**********
  • Python code:

這題的進階題是印出金字塔,等等會出現在Project 4的練習上

來了Project 4 的實戰~~~

第三題LIOJ 1022:印出金字塔

題目也是輸入一個數字N,依照規律印出星星成金字塔階層形狀的

input :
1
output :
*
input :
3
output :
*
***
*****
*******
  • Python code:

這題是剛剛印出星星的進化題,星星的部分是同樣的作法,另外就是要變成金字塔,在星號的左邊需要依照規律印出空白,而且這個規律是遞減的。

第四題LIOJ 1023:印出聖誕樹

題目也是給一個N,跟剛剛的星星題、金字塔題再延伸,也就是剛剛的金字塔再底下加入|表示聖誕樹的樹幹,也要依照規律加入樹幹,如下範例:

input :
1
output :
*
input :
4
output :
*
***
*****
*******
|
|
|
  • Python code:

第五題LIOJ 1024:NM乘法表

這題也是經典題九九乘法表的延伸,題目輸入兩數分別為N和M,依照兩數範圍印出乘法表,如下範例:

input :
2
3
output :
1*1=1
1*2=2
1*3=3
2*1=2
2*2=4
2*3=6
  • Python code:

這題特別注意最後的輸出是需要以字串的形式輸出,不是數字integer喔~

第六題LIOJ 1025:水仙花數

這題是這單元中最困難的,這題是給定兩個數字,代表其將判斷的範圍值始於第一個數字,終於第二數,而將每一個數字去判斷是否為水仙花數,那先來定義水仙花數,當一個n位數,其每一個數字的n次方相加等於自己時,他就是水仙花數了,例如:153=1的三次方+5的三次方+3的三次方,參考以下範例:

input : (判斷從5到200中誰是水仙花數)
5 200
output :
5
6
7
8
9
153
  • Python code:

這題可以拆解成兩步驟,第一個是判斷為幾位數、第二為取出各數字做次方運算後相加,就這兩個關鍵步驟,特別注意python 使用pow( )做次方計算的函式時,在平台上會超過運算時間,因此改為使用**的operator去做計算。

小心得

這一個單元練習的題目比較多,題目的複雜度也提高了,開始有雙層迴圈、或是需要函式協助處理的問題,每一次刷題出現AC的時候是真的很開心,繼續加油努力獲得AC囉!

❤️感恩看到這裡的你,希望這篇文章有幫上你👏歡迎拍手給我鼓勵,我是甜不辣馬拉松,我們下次見

--

--

甜不辣馬拉松
甜不辣馬拉松

Written by 甜不辣馬拉松

幻想自己是貝多芬,可是敲打的卻是機械鍵盤

No responses yet