资讯中心 Info
当前位置:酷叮猫 > 资讯中心 >
Python 一个数字排列问题
发布日期:2018-08-08 阅读次数:

这一期的问题还是一个在三位数当中寻找某些数字的问题.

[题目]

用1,2,3...9 组成3个三位数abc, edf, ghi, 每个数字恰好使用一次,

他们之间的比是 abc:edf:ghi == 1:2:3

[输出]

找到并输出所有符合条件的 "abc edf ghi"

[分析]

因为数字里不包括0,所以我们知道3位数的范围应该大概位于 111 --- 999 之间.

因为1:2:3的比例关系, 所以推断出abc的范围大概位于 111 --- 333之间.

我们这里利用字符串处理和集合的唯一性来得到我们需要的结果.

当然,思路和算法不止一种,但这一次我还是结合Python语言的自身特点写出一段比较Pythonic的代码.

[运行结果]

[代码]

def test():
    for abc in range(111,333):
        ijk = abc *2
        xyz = abc *3
        a,b,c = [int(x) for x in str(abc)]
        i,j,k = [int(x) for x in str(ijk)]
        x,y,z = [int(x) for x in str(xyz)]
        s = set([a,b,c,i,j,k,x,y,z])
        s.discard(0) #  把0去掉,如果还有9个数据的话,就代表1~9都使用了, 因为set里的元素都是惟一的.
        if len(s)==9:
            print(abc, ijk, xyz)
 
if __name__=="__main__":
    test()

课程体系
通知公告