看板 Python 關於我們 聯絡資訊
令a和b為兩變數(0~9999),可自行輸入 試求有幾個位數不同 例如:1234/2345。 四個位數不同 例如:1123/1233。兩個位數不同 有人知道要怎麼表達嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.8.1 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1522690633.A.D2D.html ※ 編輯: Redbeansauce (114.136.8.1), 04/03/2018 01:37:43
Panthalassa: 假定 a, b 是字串,所求:04/03 02:26
Panthalassa: sum([ a[i] != b[i] for i in range(len(a)) ])04/03 02:26
ThxThx: 樓上這樣 1). 沒有考慮len(b) < len(a)的時候會有error04/03 03:23
ThxThx: 2). 比較慢又不pythonic04/03 03:23
ThxThx: 我認為正確的作法是sum(x != y for x, y in zip(a, b))04/03 03:25
ThxThx: 這是當a,b一樣長的時候,不保證一樣的時候04/03 03:28
ThxThx: sum(x != y for x, y in zip(reversed(a), reversed(b)))04/03 03:29
Panthalassa: 噢對!但也許應該要前面放 assert ?04/03 03:38
Panthalassa: 但若長度不一樣的話,用 zip 會補 None 然後算成不同04/03 03:38
Panthalassa: 不確定是否滿足需求...04/03 03:38
Panthalassa: 從原 Po 的敘述來看應該是要補 004/03 03:39
ThxThx: 嗯嗯有道理我第二個答案會忽略比較長的04/03 05:26
ThxThx: 把第二個答案zip換成itertools.zip_longest應該可以04/03 05:29
djshen: 應該先說一下自己的想法04/03 10:15
恩恩感謝大家的回答,因為我昨天才剛學兩小時 我有做出來,但我的方式很慢,就是列舉法把他們變成字串後一個一個去比較,覺得自己 非常腦,所以才來問orz ※ 編輯: Redbeansauce (114.136.8.1), 04/03/2018 10:36:49
s860134: 你的思路沒錯阿 04/03 12:12
s860134: 轉 str 用 zfill 04/03 12:18
s860134: 其實這根本就只是對 python buildin function 記多少而以 04/03 12:19