天天看點

回顧---(1)d = c-ae = b-aprint(d, e)

回顧----(1)

好幾天沒有更博了,謹以此篇練習來回顧前段時間所學習到的一些知識,并且感謝各位碼友們的支援和批評指正!

1、 practice 1

題目要求:

0010 1000轉換為十進制

0000 2171轉換為十進制

0000 5AFB轉換為十進制

代碼如下:

a = 0b00101000
b = 0o00002171
c = 0x00005AFB
print(int(a), int(b), int(c))
           

起初寫語句的時候寫得是a = 00101000,忘記了寫數是幾進制了,寫了兩句才想起來,可見知識還是需要時時拿出來溫習!

運作結果如下:

40 1145 23291
           

2、practice 2

題目要求:

a,b=2,4

b=c=5 c-a>b-a的結果是?

a+=3 resault=a+b resault=?

代碼如下:

a, b = 2, 4
b = c = 5
d = c-a
e = b-a
print(d, e)
print(c-a > b-a)  # 列印布爾類型的結果
a += 3
resault = a+b
print(resault)
           

d = c-a

e = b-a

print(d, e)

部落客加上這三句主要是想看到自己在剛寫出的代碼時,手動計算一下該段代碼的結果,走一下執行流程,進而與計算機執行結果進行比較,看是否在思考的過程中有偏差。

運作結果如下:

3 3
False
10
           

3、practice 3

題目要求:

使用if完成,輸入天氣溫度,如果高于30攝氏度,列印太熱了,否則列印還行

考察點:

  • 鍵盤輸入input
  • 強制類型轉換
  • if-else結構

代碼如下:

fact_Tem = int(input("請輸入實際溫度:"))
if fact_Tem >= 30:
    print("太熱了!")
else:
    print('還行,沒那麼熱')
           

運作結果如下:

請輸入實際溫度:30
太熱了!

請輸入實際溫度:18
還行,沒那麼熱
           

4、practice 4

題目要求:

當p為True,q為False時,布爾表達式not(p and not q)的結果是?

代碼如下:

p = True
q = False
print(not(p and not q))
           

運作結果如下:

False
           

有一點需要注意,python當中的True和False的首字母必須大寫!

5、practice 5

題目要求:

使用while循環輸出1-50之間偶數的和

代碼如下:

方式一:

sum = 0
i = 2
while i <= 50 and i % 2 == 0:
    sum += i
    i += 2
print(sum)
           

這種方法固然是可以的,但是它并不适用于普遍情況,它隻是說從第一個滿足條件的偶數開始,然後每次加2即可持續滿足條件,最後輸出結果。

實際上此處還是想考察一下對***while裡面嵌套if判斷***的掌握。

方式二:

sum = 0
i = 1
while i <= 50:
    if i % 2 == 0:
        sum += i
    i += 1
print(sum)
           

運作結果相同,如下:

650
           

6、補充知識

(1)用for語句也可以求解practice 5,代碼如下:

sum = 0
for i in range(1, 51):
    if i % 2 ==0:
        sum += i
print('sum=', sum)
print('完成for循環之後i的值是?', i)
           

運作結果如下:

sum= 650
完成for循環之後i的值是? 50
           

如果把sum放到for循環裡面,那麼還可以實作累加嗎?

for i in range(1, 51):
    sum = 0
    if i % 2 ==0:
        sum += i
print('sum=', sum)
           

運作結果如下:

sum= 50
           

運作結果顯示:不會再實作累加了,每一輪條件判斷結束,sum都會歸零,就像秒表歸零一樣,sum最後的結果會是最後一次的i的值。

接着考慮,能否在for循環裡面再次聲明一個變量,比如聲明一個b變量,看看是否可以實作累加?(與上一段代碼類似)

sum = 0
for i in range(1, 51):
    b = 0
    b += i
    print('b======>', b)
    if i % 2 == 0:
        sum += i
print('sum=', sum)
print('b======>', b)
           

運作結果如下:

b======> 1
b======> 2
b======> 3
b======> 4
b======> 5
b======> 6
b======> 7
b======> 8
b======> 9
b======> 10
b======> 11
b======> 12
b======> 13
b======> 14
b======> 15
b======> 16
b======> 17
b======> 18
b======> 19
b======> 20
b======> 21
b======> 22
b======> 23
b======> 24
b======> 25
b======> 26
b======> 27
b======> 28
b======> 29
b======> 30
b======> 31
b======> 32
b======> 33
b======> 34
b======> 35
b======> 36
b======> 37
b======> 38
b======> 39
b======> 40
b======> 41
b======> 42
b======> 43
b======> 44
b======> 45
b======> 46
b======> 47
b======> 48
b======> 49
b======> 50
sum= 650
b======> 50
           

運作結果顯示:在for循環當中的b的值每次都是0加上該次從range當中取到的值。for循環之外的b的值是最後一次的b的值,為50.

這道練習的目的想要說明兩個:

- 聲明變量的位置:聲明在for、while循環的外層,再執行sum+=i,就相當于累加。 如果放在for、while循環的内層,相當于每次循環都會再次執行這個操作,就像上面第二段代碼中sum=0,每次操作都會清零 。 假設即使上一步已經算出來sum=100了 再來一次計算都會清零

- python在for、while循環中沒有變量的作用域,在for、while循環的外層都可以擷取值, 變量聲明在循環裡面,循環外面都可以在最後取到它的值,隻不過聲明在内部和外部的作用不同 聲明在裡面是每次都置零 聲明在外面是做累加操作

(2)再補充一下break與continue跳轉語句

要求:如果是3的倍數則不進行累加

方式一:

sum = 0
for i in range(10):
    if i % 3 != 0:
        sum += i
print('sum----111=', sum)
           

運作結果:

sum----111= 27
           

方式二:

sum = 0
for i in range(10):
# 任務1
    if i % 3 == 0:
        pass  # pass就是先占着位置,不讓它出現文法錯誤的
# 任務2
    sum += i
print('sum----222=', sum)  # 這裡相當于是0-9的累加 即使i % 3 == 0也pass了,對排除是三的倍數不起作用
           

運作結果:

sum----222= 45
           

我們觀察運作結果可以發現:方式一與方式二的運作結果不一樣,為什麼會出現這樣的結果嘞? 因為pass就是先占着位置,不讓它出現文法錯誤的,即使滿足條件做完任務一還是會進行任務二,就相當于是将1-9累加。

而且,我們手動計算一下,發現方式一的結果是正确的。那麼如何修正一下方式二的程式讓它運作結果變正确嘞?現在要怎麼在任務一的pass處填充内容呢?

(1)如果把pass關鍵字換成break會變成什麼樣子呢?

sum = 0
for i in range(10):
# 任務1
    if i % 3 == 0:
      break # 跳出整個for循環結構
# 任務2
    sum += i
print('sum----333=', sum)
           

運作結果如下:

sum----333= 0
           

因為for i in range(10):取值範圍是0-9,0% 3 == 0,滿足條件,直接break退出,進而執行print(‘sum----333=’, sum)

(2)如果把pass關鍵字換成continue會變成什麼樣子呢?

sum = 0
for i in range(10):
# 任務1
    if i % 3 == 0:
    	continue  # 跳過下方的語句不執行,繼續執行下一次的循環
# 任務2
    sum += i
print('sum----444=', sum)
           

運作結果如下:

sum----444= 27
           

continue是指:跳過下方的語句不執行,繼續執行下一次的循環 (結束本次循環下方的語句)

那麼誰是continue下方的語句嘞?它指的是循環體當中的下方的語句不執行,即:任務2 sum += i不執行,直接進行下一次的循環。執行結果無誤!