前情提要:
作為一個開心碼農,就是要不停碼、不斷農,一時碼、一時爽,一直農、一直爽......個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的毒蛙的那種差異吧......!