用Python的條件實現電影分級流程

Photo by Denise Jans on Unsplash

電影分級流程

電影的分級制度大家應該都不算陌生吧。就目前 台灣的現行分級制度來說可以分為五級。分為

  • 普遍級:一般觀眾皆可觀賞
  • 保護級:未滿6歲之兒童不宜觀賞,6歲以上未滿12歲之兒童需父母、師長或成年親友陪伴觀賞。
  • 輔12級:未滿12歲之兒童不宜觀賞。
  • 輔15級:未滿15歲之人不宜觀賞。
  • 限制級:未滿18歲之人不宜觀賞。

五種。

我們現在透過 Python的控制流程 來逐步思考這個問題吧。

首先,先處理限制級的問題。限制級的條件是未滿18歲之人不得觀賞限制級電影。
如果把它轉換成邏輯陳述,就可以變成『假如年齡小於18歲,不得觀賞『限制級』電影
。但可以觀賞其他級數電影 — 『普遍級』、『保護級』、『輔12級』與『輔15級』電影』

程式可以寫成如下的式子:
假設我們輸入15歲(age = 15)的話,執行結果如下:

age = int(input("請輸入你的年齡: ").strip())
if(age <18):
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』、『輔12級』與『輔15級』電影,但由您未滿18歲,不得觀賞『限制級』電影".format(age))

假設我們輸入30歲(age = 30)的話,執行結果如下:

什麼訊息都沒有。

接下來我們來優化一下程式碼,在條件不符合的時候給他一些提示訊息。運用ELSE就可以表達「條件不符合時的狀況」。

程式可以改寫成如下的式子:

age = int(input("請輸入你的年齡: ").strip())if(age <18):
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』、『輔12級』與『輔15級』電影,但由您未滿18歲,不得觀賞『限制級』電影".format(age))
else:
print("您目前年齡為{}歲,可以觀賞任何電影".format(age))

我們再次輸入30歲(age = 30),執行結果如下:

出現「可以觀賞任何電影」的訊息了。

接下來,我們輸入15歲輔導級的條件。

age = int(input("請輸入你的年齡: ").strip())if(age <18):   
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』、『輔12級』與『輔15級』電影,但由您未滿18歲,不得觀賞『限制級』電影".format(age))
elif(age < 15):
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』與『輔12級』電影,但由於您您未滿15歲,不得觀賞『輔15級』電影。".format(age))
else:
print("您目前年齡為{}歲,可以觀賞任何電影".format(age))

接者繼續輸入12歲輔導級與保護級的條件。

age = int(input("請輸入你的年齡: ").strip())if(age <18):
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』、『輔12級』與『輔15級』電影,但由您未滿18歲,不得觀賞『限制級』電影".format(age))
elif(age < 15):
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』與『輔12級』電影,但由於您您未滿15歲,不得觀賞『輔15級』電影。".format(age))
elif(age <12):
print("您目前年齡為{}歲,可以觀賞『普遍級』與『保護級』電影,但由於您未滿12歲,如欲觀賞『輔12級』電影,需父母、師長或成年親友陪伴。".format(age))
elif(age < 6):
print("您目前年齡為{}歲,您未滿6歲,不得觀賞任何電影。".format(age))
else:
print("您目前年齡為{}歲,可以觀賞任何電影".format(age))

輸入完畢後我們測試一下,先輸入5歲(age = 5),執行結果如下:

怎麼與我們期待的結果不同?我們希望它落入age < 6 區段的陳述子句,卻落到 age < 18區段了。

主要的原因前面有說過,ELIF陳述句的順序非常重要,由於該陳述句中,一旦找到符合條件的子句,其他剩下的子句都會跳過。目前的狀況就是它找到 age < 18符合條件之後,就跳過後面所有的陳述子句了。因此,我們必須調整上面程式的順序:

age = int(input("請輸入你的年齡: ").strip())if(age < 6):
print("您目前年齡為{}歲,您未滿6歲,不得觀賞任何電影。".format(age))
elif(age <12):
print("您目前年齡為{}歲,可以觀賞『普遍級』與『保護級』電影,但由於您未滿12歲,如欲觀賞『輔12級』電影,需父母、師長或成年親友陪伴。".format(age))
elif(age <15):
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』與『輔12級』電影,但由於您您未滿15歲,不得觀賞『輔15級』電影。".format(age))
elif(age <18):
print("您目前年齡為{}歲,可以觀賞『普遍級』、『保護級』、『輔12級』與『輔15級』電影,但由您未滿18歲,不得觀賞『限制級』電影".format(age))
else:
print("您目前年齡為{}歲,可以觀賞任何電影".format(age))

調整後再輸入5歲(age = 5)執行一次,結果:

這樣子就正確了。如此,整個分級制度的邏輯就完成了。如果你常常寫Python程式的話,應該會想到很多可以優化的方式。以後有機會會在介紹如何簡化上面的程式碼。

--

--

Sean Yeh
Python Everywhere -from Beginner to Advanced

# Taipei, Internet Digital Advertising,透過寫作讓我們回想過去、理解現在並思考未來。並樂於分享,這才是最大贏家。