簡體   English   中英

我對 python 邏輯有點困惑; 以及我對確定奇數和偶數的模數的問題

[英]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 % 2count為奇數時分解為if 1始終為 True

  • if count % 2count甚至分解為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM