#21214: [python] 疑似較快速的英文字母轉數值


d10831403@gapps.fg.tp.edu.tw (速水凜香是我老婆)

學校 : 臺北市立第一女子高級中學
編號 : 101086
來源 : [219.91.75.11]
最後登入時間 :
2021-06-19 20:46:24
a020. 身分證檢驗 | From: [219.91.75.11] | 發表日期 : 2020-05-02 14:57

想必大家應該都是直接用一串if判斷英文字母吧www

在此提供一個疑似比較快的方法

主要概念是用ascii把英文字母先數值化,再進行處理(另外將特例指定為其他數值、減一之類的)

沒用/聽過ascii的可以上維基&https://www.tinycorner.tw/2018/10/08/%E5%88%A9%E7%94%A8-python-%E5%81%9A-ascii-%E8%BD%89%E6%8F%9B/看看,就當作長知識ㄅ

其餘的我的作法是跑個迴圈累加數值,然後再把剛剛數值化的東西稍稍處理一下就行了~~

附上敝人的的部分程式(英文字母處理的部分):

n = input()

k = int(ord(n[0]))-55

if k>=18:

if k==18:

   k = 34

   else:

      k-=1

      if k>=23:

         if k==23:

            k = 35

            else:

               k-=1

               if k==30:

                  k = 32

               elif k==31 or k==32:
                  k-=1
 
希望能幫上大家的忙~~(我跑起來是 AC 16ms, 3.4MB)
 
ZeroJudge Forum