close

0_iK3HROEnAj9yBafB

前情提要

作為一個開心碼農,就是要不停碼、不斷農,一時碼、一時爽,一直農、一直爽......個P!

不過要做為一個開心碼農肯定不能一直做
```
print('Hello World')
```

其他的迴圈、變數等等的練習肯定少不了!

所以提到迴圈就得說說for和while兩種了......

-----

最近的練習中,for迴圈倒是滿常用到了,一般理解&操作起來也不很困難

大部分就是無腦的
```
for i in range(0, xxx):
```
或是
```
for i in range(1, xxx+1):
```
這樣的!

然而換到了while迴圈的練習題:"請列出從1~使用者輸入的整數間的所有偶數"的時候,我的腦子都快燒了...!

腦袋燒掉的主要原因有:
1.知道要做判斷式
2.判斷式做好了
3.判斷式放進去以後,不是報錯,就是無限迴圈去啦~!

雖然這問題看起來應該是非常蠢,但因為被整到了,所以感覺這個debug非常的有意義,足夠來發篇文章紀念下!!

-----

這次的練習題如前面說的,"請列出從1~使用者輸入的整數間的所有偶數"

原本的範例中一開始是把變數i設為2下去做計算,這部分倒是沒太大問題。
```
i = 2
n =int(input('請輸入一個數字:'))
while(i <= n):
    print(i, end=' ')
    i = i +2
```

有問題的則是作為延伸題的"其他的寫法:不在第一時間宣告 i = 2,而是 i=1 其後再用判斷式"

看到這題目加上最近在新手村砍木人的成果,就知道要用
```
if(i % 2 ==0):
```

但一開始組合到while下面之後就開始了一場陣痛;因為一下說標齊的位置不對,一下報錯,一下無限迴圈...

這真的是新手任務嗎?

不過好在突然像柯南一樣閃過一道光,就是那道光讓我改變戰略,跑去開另一個檔案並把if+for迴圈的判斷式給寫好!
```
i = 1
n=int(input('請輸入一個整數:'))
for i in range(1, n+1):
    if (i % 2 ==0):
        print(i, end=' ')
        i = i +1 
```

※如果要改成列出奇數的話,就把i % 2 == 0改成i % 2 != 0

然後跑起來是正常的之後,就一切看似很美好的塞到while迴圈裡面去,然後......就無限迴圈了!

無限迴圈的寫法是這樣:
```
n=int(input('請輸入一個整數:'))
i = 1
while (i <= n):
    if(i %2 ==0):
        print(i, end=' ') 
        i = i +1  
```

看樣子,就算在if判斷式內有包含 i = i + 1,但while迴圈也是不會承認的喔!

所以初新者碼農挺住了while魔獸攻擊,並在損傷999之後,以HP1的狀態在if判斷式的外層再加上一次i = i + 1,然後這支程式才終於正常執行了...

(怎覺得我好像在做if & else,但卻不用寫出else)

最後能正常執行的是:
```
n=int(input('請輸入一個整數:'))
i = 1
while (i <= n):
    if(i %2 ==0):
        print(i, end=' ') 
        i = i +1        
    i = i +1  #如果i %2 != 0, 一樣要讓i跑到下一個數字(迴圈) 
```

雖然整個debug的過程好像殺了個什麼了不起的大Boss的感覺,但實際上大概就是Lv.1的青蛙和Lv.15的毒蛙的那種差異吧......!


 

arrow
arrow
    創作者介紹
    創作者 PIZZ不是PIZZA啦 的頭像
    PIZZ不是PIZZA啦

    PIZZ不是PIZZA的IT(挨踢)人生

    PIZZ不是PIZZA啦 發表在 痞客邦 留言(0) 人氣()