zoukankan      html  css  js  c++  java
  • Python【每日一问】19

    问:

    【基础题】:请解释类方法、静态方法、属性方法
    【提高题】:有以下几个数字:1、2、3、4、5,能组成多少个互不相同且无重复数字的三位数?都是多少?(代码实现)

    答:

    【基础题】:请解释类方法、静态方法、属性方法

    1 @staticmethod
    2 静态方法,通过类直接调用,不需要创建对象,不会隐式传递self
    3 
    4 @classmethod
    5 类方法,方法中的cls是类对象本身,调用方法时传的值也必须是类的公有属性,就是说类方法只能访问类本身的公有字段,不能访问实例变量
    6 
    7 @property
    8 属性方法:把一个方法变成一个静态属性。调用的时候不需要加()
    1 静态方法:在类中的方法前面通过@staticmethod装饰器实现静态方法
    2 类方法:在类中的方法前面通过@classmethod装饰器实现类方法,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量
    3 属性方法:在类中的方法前面通过@property装饰器实现属性方法,即把一个方法变成一个静态属性

    【提高题】:有以下几个数字:1、2、3、4、5,能组成多少个互不相同且无重复数字的三位数?都是多少?(代码实现)

    方法1:

    import itertools
    from functools import reduce
    
    lyst = [1, 2, 3, 4, 5]
    result = []
    
    for el in itertools.permutations(lyst, 3):
        temp = reduce(lambda x,y:x * 10 +y, el)
        result.append(temp)
    
    print(f'总共有{len(result)}个互不相同且五重复数字的三位数,分别是:')
    print(result)

    方法2:

    import copy
    numbers = [1, 2, 3, 4, 5]
    tri = []
    for i in numbers:
        d_u = copy.copy(numbers)
        d_u.remove(i)
        for j in d_u:
            u = copy.copy(d_u)
            u.remove(j)
            for k in u :
                tri.append(i * 100 + j * 10 + k)
    
    print(tri)
    print(len(tri))

    方法3:

    import itertools
    count = 0
    for i in itertools. product([1,2,3,4,5], repeat=3):
        if i[0] != i[1] and i[0] != i[2] and i[1] != i[2]:
            print(i[0]*100 + i[1]*10 + i[2])
            count += 1
    print(count)

    方法4:

    firstNumber = [1, 2, 3, 4, 5]
    count = 0
    for i in firstNumber:
        secondNumber = firstNumber[:]
        secondNumber.remove(i)
        for j in secondNumber:
            thirdNumber = secondNumber[:]
            thirdNumber.remove(j)
            for k in thirdNumber:
                print(str(i) + str(j) + str(k), end=",")
                count += 1
    print("一共有{}个数".format(count))
  • 相关阅读:
    java中子类与父类中隐含的this引用的分析
    c++中基类与派生类中隐含的this指针的分析
    c++中关于初始化型参列表的一些问题
    2014牡丹江网络zoj3816Generalized Palindromic Number(dfs或者bfs)
    2014牡丹江网络赛ZOJPretty Poem(暴力枚举)
    poj1949Chores(建图或者dp)
    poj 1950 Dessert(dfs枚举,模拟运算过程)
    java中自动装箱的问题
    hdu4292Food(最大流Dinic算法)
    codeforces Gargari and Permutations(DAG+BFS)
  • 原文地址:https://www.cnblogs.com/ElegantSmile/p/10824355.html
Copyright © 2011-2022 走看看