[英]I'm a little confused about python logic ; and my question to the modulus in determining odd and even
我想問一下,下面的代碼產生的三角形 * 只是奇數......但我很困惑......誰能解釋為什么模數可以產生奇數三角形以及為什么需要 else 命令? (注意我不太了解模數)
count = 1
while True :
if count % 2 :
print ('*'*count)
count += 1
else:
count +=1
continue
if count > 10 :
break
表達式if (count % 2):
表示計數是否為奇數。
解釋:
count % 2
如果 count 是偶數,將始終等於 0
如果 count 是奇數,將始終等於 1
if count % 2
當count
為奇數時分解為if 1
始終為 True
if count % 2
當count
甚至分解為if 0
始終為 False
對於你的第二個問題, else 實際上是沒有必要的,它可以像這樣重寫
count = 1
while True:
if count % 2 :
print ('*'*count)
count += 1
if count > 10 :
break
當您考慮由*
組成的標准等邊三角形時:
這就是只使用奇數的樣子..
*
***
*****
*******
*********
***********
*************
這就是使用偶數和賠率的樣子
*
**
***
****
*****
******
*******
在這種情況下,模數區分奇數和偶數。 在您的情況下,正如您在打印的金字塔中看到的那樣,您只有奇數 - 1,3,5 等。當您有偶數時,您處於“if”部分,而在 else 部分中則為 off。
我建議您在程序中添加更多打印語句,以更詳細地查看它的行為。
if 檢查返回值 = 1,而不是零。 例如,如果您嘗試輸入 if(count % 2 == 0),您會注意到非奇數打印。
您的邏輯可能會被簡化:
for i in range(1, 12, 2):
print('*' * i)
解釋:
range
運算符接受一個stop
值(不包括)和一個step
值,默認為 1。這里我們傳遞step=2
,所以我們只迭代范圍內的奇數。
出去:
*
***
*****
*******
*********
***********
模或模除法就像小學 integer 除法,您不計算小數部分,而只是計算整個部分和余數。 具體來說,模會拋出整個部分,只保留其余部分。 與之相反的是 integer 除法,它拋出余數: 9//2 == 4 #quotient
9%2 == 1 #remainder
while True:
永遠這樣做(或直到break
或未捕獲的錯誤)
if (count % 2):
如果 count 為奇數則執行此操作: (count % 2)
如果奇數則為 1,如果偶數則為 0。 對於if
條件,1 將強制轉換為 True,0 將強制轉換為 False。
print('*'*count)
通過將字符串"*"
重復count
次來構造一個字符串,並print
它。count += 1
遞增計數變量else
,則執行此操作(與先前語句的推論)
count += 1
遞增計數變量if count > 10:
當 count 變量大於 10
break
退出while True
循環
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.