[问题] 求解有几个位数不同的问题

楼主: Redbeansauce (泓豆酱料)   2018-04-03 01:37:10
令a和b为两变量(0~9999),可自行输入
试求有几个位数不同
例如:1234/2345。 四个位数不同
例如:1123/1233。两个位数不同
有人知道要怎么表达吗?
作者: Panthalassa   2018-04-03 02:26:00
假定 a, b 是字串,所求:sum([ a[i] != b[i] for i in range(len(a)) ])
作者: ThxThx (洗洗睡)   2018-04-03 03:23:00
楼上这样 1). 没有考虑len(b) < len(a)的时候会有error2). 比较慢又不pythonic我认为正确的作法是sum(x != y for x, y in zip(a, b))这是当a,b一样长的时候,不保证一样的时候sum(x != y for x, y in zip(reversed(a), reversed(b)))
作者: Panthalassa   2018-04-03 03:38:00
噢对!但也许应该要前面放 assert ?但若长度不一样的话,用 zip 会补 None 然后算成不同不确定是否满足需求...从原 Po 的叙述来看应该是要补 0
作者: ThxThx (洗洗睡)   2018-04-03 05:26:00
嗯嗯有道理我第二个答案会忽略比较长的把第二个答案zip换成itertools.zip_longest应该可以
作者: djshen (djshen)   2018-04-03 10:15:00
应该先说一下自己的想法
作者: s860134 (s860134)   2018-04-03 12:12:00
你的思路没错阿转 str 用 zfill其实这根本就只是对 python buildin function 记多少而以

Links booklink

Contact Us: admin [ a t ] ucptt.com