• python3.0练习100题——001


    自学python3中,现在开始每天在python2.71 100例中做一道题,用python3实现,并写下一些思考~加油(ง •̀灬•́)ง

    题目网站(http://www.runoob.com/python/python-100-examples.html)

    001题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

    我的答案:

    def fun():
        n=0
        for x in range(1,5):
            for y in range(1,5):
                for z in range(1,5):
                    if (x!=y) and (x!=z) and (y!=z):
                        print("%d%d%d"%(x,y,z))
                        n=n+1
        print("tatal:%d"%n)

    fun()

    思考:

    1.用三个循环嵌套可以遍历所有可能的数值,再用if条件筛选出来。但是在数据量大的时候遍历,可能会延长时间。所以可以改进一下代码:

    def fun():
        n=0
        for x in range(1,5):
            for y in range(1,5) :
                if y!=x:            #增加if条件语句,让循环要产生的数字减少,更省运行时间
                    for z in range(1,5):
                        if  (x!=z) and (y!=z):
                            print("%d%d%d"%(x,y,z))
                            n=n+1
        print("tatal%d"%n)
    
    fun()

    2.用permutations的方法

     from itertools import permutations
     for i in permutations([1,2,3,4],3):
         print("%d%d%d" %(i[0],i[1],i[2]))

     itertools.permutations(iterable,r)

    创建了一个迭代器,返回iterable中所有长度为r的项目序列,如果省略了r,那么序列的长度与iterable中的项目数量相同: 返回p中任意取r个元素做排列的元组的迭代器。

    等于说是从列表[1,2,3,4]任意取三个元素,各种排列后,返回含有三个元素的tuple。最后输出的时候格式化一下就好了~

  • 相关阅读:
    Linux下文件的压缩和解压
    Env: Linux下Source Insight安装
    [uart]2.tty和uart的函数调用流程
    [uart]stty命令使用
    腾讯云的云数据库MYSQL配置
    MySQL分支Percona
    MYSQL的历史
    MYSQL的价格
    mysql之event
    Linux下设置网卡静态ip
  • 原文地址:https://www.cnblogs.com/drifter/p/9059872.html
Copyright © 2020-2023  润新知