close

FOR 迴圈

現在來做一個輸入什麼數字 就產生幾個*字號的頁面

首先宣告一個str 空字串變數  來裝*號

不然每次.innerHTML都會蓋掉

for(i = 0;i < score;l++)

for(宣告一個用來記數的變數再給他起始值;什麼時候停止;每一次迴圈記述變數的變化)

for(var i = 0;| < score;|++)  這裡前面要加var也可以 沒有差

這個 i 也是只有for裡面才看得懂 外面不認識他

i++ = 意思是執行完這段陳述之後 i = i+1;

現在設定從0開始記數 直到<score  每次+1

這樣就剛好執行了score的次數

每執行一次str += '*';

這句相當於 str = str + '*';  是加在後面的

如果想要加在前面 就自己打成 str = '*' + str; 

舉例 現在把一段字串複製到另一段字串

用for迴圈去跑他每一個字 然後加在新字串後面

如果加在後面

 

現在做一個題目 

輸入秒數 然後把他轉換成 時:分:秒 的格式輸出

一些會用到的運算

Math.floor(8.5)輸出 8 無條件捨去小數點

7/2 輸出3.5 除法

11%2 輸出1 取於數

var a = 70;

'你好' + a  輸出字串  你好70

這樣可以把變數跟字串連再一起

---------------------------------------------------------------------------------

以下解答

 

 

 

 

首先取得 時:分:秒 裡面的秒

秒就是總秒數除以60之後剩下未滿60秒 不能湊成一分的

所以就是總秒數 % 60

假設我輸入123

那應該等於兩分三秒  0:2:3

所以秒的必分 123 % 60 = 3

分的話就是 123 / 60 = 2.05 這時候就要捨去小數

剩下小時

如果我輸入 3600 那分照剛剛的運算會得到 3600 / 60 = 60

這時候應該要進位成1小時

所以 小時 = 3600 / 60 / 60 再捨去小數

剛剛的分 如果超過60 就應該要進位了

所以跟秒一樣要 % 60 取餘數

這些都是變數名稱 可以隨便命名 方便看就好

程式的變數命名法通常有兩種標準

一種是底線法 user_name   user_id

一種是駝峰法 userName   userId

 

看懂了做一個相反的  輸入時:分:秒 輸出總秒數

要用到的函數

字串.split(':') 會回傳一個陣列

如var a = '20:30:40'.split(':')

會得到a[0] = '20'

a[1] = '30'

a[2] = '40'

-----------------------------------------------------------------------------------

以下解答

 

 

 

 

 

我的解答:

多做了兩個按鈕 分別運算之後再加起來

有些地方忘記加上分號 要注意養成習慣

 

使用split(':')的解法

split(':') 會把一個字串以:分開成陣列

如果輸入 1;2:3 就會得到一個大小為3的陣列 索引是從0開始

num[0]='1'  num[1]='2'  num[2]='3'

如果字串是 ::1::1:3::::::4

會得到大小為四的陣列 

num[0]='1'

num[1]='2'

num[2]='3'

num[3]='4'

如果字串是 ::fuck=:**1:

會得到大小為2的陣列

num[0]='fuck='

num[1]='**1'

 

再來寫一個 

輸入 兩個整數

輸出順序後由小到大排列

例如輸入 22 7

輸出 7 22

-----------------------------------------------------------------------

以下解答

 

 

 

 

 

 

把字串串起來的方法   num0 + '' + num1 

 

 

練習for 迴圈

for迴圈是讓程式高效率的重點 可以自動重複執行你要的功能

 

for(i = 0; i<3; i++){

重複執行的程式碼

}

 

這意思是 

 

建立一個for迴圈 然後宣告一個 i變數 =0

這邊要打 for(var i = 0; i<3; i++) 也可以

這個i變數是拿來當迴圈的計數器

for(給計數器起始值;什麼時候結束;每個迴圈後如何累加)

有加上var的話 功能上是沒差

但可以比較好辨別他是這個for回圈內的變數 外面是不能用的

如果你要拿外面宣告的變數進來for當作計數器也可

 

所以 for(var i = 0 ; i<3 ; i++) 意思就是

記數起始0 當他小於3時會執行 每次+1

for(var i = 0; i<3; i++){

輸出i}

如果我在每個迴圈輸出i值

會出現

0

1

2

總共跑三圈

 

for(var i = 0; i <=3; i++){

輸出i

}

如果是這樣 會輸出

0

1

2

3

 

for(var i = 0 ; i<=3 ; i--{

輸出i

}

如果是這樣 會出錯

因為i永遠不可能大於3 會變成無限迴圈

 

for(var i = 0; i<=5 ; i=i+2){

輸出i

}

如果是這樣 會輸出

2

4

每次累加改成2 有時候不一定每次加1 看需求

 

 

寫一個功能

輸入一個數字 

3

輸出

1

2

3

 

輸入

5

輸出

1

2

3

4

5

 

換行是 <br>

假如我有個字串 = '1<br>2<br>3'

放到innerHTML裡面就會是

1

2

3

 

------------------------------------------------------------------------

以下解答

x = "" 的意思是

for 跑完第一圈

x是 1<br>

第二圈把2<br>加在x後面所以

x是1<br>2<br>

第三圈把3<br>加在x後面

x是 1<br>2<br>3<br>

直接在HTML裡面打1<br>2<br>3<br>

就會出現

1

2

3

所以就是利用for迴圈 一次生成完重複的html語法

然後插入指定的hello元素內

像這種也是利用for迴圈生成連續的html語法片段

 

再來是巢狀for迴圈 巢狀的結構常常會看到

就是if裡面有if   for裡面有for

一個for是一維   雙層for就是二維的概念

 

 

現在做一題

輸入一個數字

3

輸出

*

**

***

 

輸入5

輸出

*

**

***

****

*****

 

要思考外圈for的每一圈要做什麼事情

*

**

***

可以看到每一行就是一個外圈for

1. 一圈裏面需要產生你那圈的記數的星號數量

這裡就是需要內圈for

2.一圈的最後需要換行<br>

剛剛上面的練習 輸入3

輸出

1

2

3

剛好就是

*

**

***

每一行的星號數量 所以要利用for記數的變數值

來去控制內圈for需要執行幾圈

 

 

 

 

 

arrow
arrow
    全站熱搜

    Catvorize 發表在 痞客邦 留言(0) 人氣()