作者Redbeansauce (泓豆酱料)
看板Python
标题[问题] 求解有几个位数不同的问题
时间Tue Apr 3 01:37:10 2018
令a和b为两变数(0~9999),可自行输入
试求有几个位数不同
例如:1234/2345。 四个位数不同
例如:1123/1233。两个位数不同
有人知道要怎麽表达吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.136.8.1
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1522690633.A.D2D.html
※ 编辑: Redbeansauce (114.136.8.1), 04/03/2018 01:37:43
1F:推 Panthalassa: 假定 a, b 是字串,所求:04/03 02:26
2F:→ Panthalassa: sum([ a[i] != b[i] for i in range(len(a)) ])04/03 02:26
3F:推 ThxThx: 楼上这样 1). 没有考虑len(b) < len(a)的时候会有error04/03 03:23
4F:→ ThxThx: 2). 比较慢又不pythonic04/03 03:23
5F:→ ThxThx: 我认为正确的作法是sum(x != y for x, y in zip(a, b))04/03 03:25
6F:→ ThxThx: 这是当a,b一样长的时候,不保证一样的时候04/03 03:28
7F:→ ThxThx: sum(x != y for x, y in zip(reversed(a), reversed(b)))04/03 03:29
8F:→ Panthalassa: 噢对!但也许应该要前面放 assert ?04/03 03:38
9F:→ Panthalassa: 但若长度不一样的话,用 zip 会补 None 然後算成不同04/03 03:38
10F:→ Panthalassa: 不确定是否满足需求...04/03 03:38
11F:→ Panthalassa: 从原 Po 的叙述来看应该是要补 004/03 03:39
12F:→ ThxThx: 嗯嗯有道理我第二个答案会忽略比较长的04/03 05:26
13F:→ ThxThx: 把第二个答案zip换成itertools.zip_longest应该可以04/03 05:29
14F:嘘 djshen: 应该先说一下自己的想法04/03 10:15
恩恩感谢大家的回答,因为我昨天才刚学两小时
我有做出来,但我的方式很慢,就是列举法把他们变成字串後一个一个去比较,觉得自己
非常脑,所以才来问orz
※ 编辑: Redbeansauce (114.136.8.1), 04/03/2018 10:36:49
15F:→ s860134: 你的思路没错阿 04/03 12:12
16F:→ s860134: 转 str 用 zfill 04/03 12:18
17F:→ s860134: 其实这根本就只是对 python buildin function 记多少而以 04/03 12:19